如何使用来自另一个 activity 的意图在选项卡式 activity 中打开一个部分?

How to open a section in a tabbed activity using an intent from another activity?

我有一个带有 4 个部分的边栏的选项卡 Activity。

当我从另一个 activity 到这个 activity 执行 Intent 时,我希望它在第四部分打开,而不是在第一部分(默认设置)。

如何更改为在第四部分打开?

试试这个:

当您从另一个 activity 发送一个意图时,将一个布尔值包与该意图放在一起,当在您的 activity 上接收到意图时,检查包是否为真,如果是,请打开您的第四部分。

您的发送activity

Bundle bundle=new Bundle();
bundle.putBoolean("fourthSection",true);

startActivity(new Intent(currentActivity.this,otherActivity.class).putExtras(bundle));

您的接收activity

Bundle bundle=getIntent.getExtras();
if(bundle.getBoolean("fourthSection")){
//go to your fourth section
}

这就是您的做法:

public class OtherActivityThatHasYourTabs ... {
  public static final String TAB_INDEX_KEY = "tab_index";
  ...
}  

有一个名为 TAB_INDEX_KEY 的密钥。这就是您如何获取和设置要在这两个活动之间传递的选项卡索引。

在您的 "current" activity 中,执​​行此操作:

Intent otherActivity = new Intent(CurrentActivity.this,OtherActivityThatHasYourTabs.class);
otherActivity.putExtra(OtherActivityThatHasYourTabs.TAB_INDEX_KEY,4);
startActivity(otherActivity);  

在您的 OtherActivityThatHasYourTabs 中,您可以检索用于通过 getIntent() 启动它的 Intent。所以,你会这样做:

Intent intent = getIntent();
Bundle extras = intent.getExtras();
int tabIndex = extras.getInt(TAB_INDEX_KEY);
if( tabIndex != 0 ){
  yourMethodToDisplayTabAtIndex( tabIndex ); 
}  

1 开始索引,因为 getInt() returns 0 如果找不到传递给 getInt() 的键。

使用 int 可以让您更加简洁和灵活,因为您只管理一个键,如果您添加更多选项卡,您可以增加索引。