启动意图以启动选项卡主机的特定选项卡

时间:2013-07-18 07:12:33

标签: java android

我正在开发这个Android应用程序,主视图有三个选项卡。 “通知”选项卡不是选项卡主机的默认选项卡。所以在通知中我只是为用户编写了删除每个通知的代码,删除通知后我希望应用程序执行的操作是重新加载通知。现在因为我想维护标签视图我不能这样做

Intent intent = new Intent(this, Notification.class);

                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);

因为这会在标签视图中以全屏视图加载通知,但如果我这样做

Intent intent = new Intent(this, TabExercise.class);

                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);

我转到标签主机的默认标签,而不是通知。所以我想知道是否有办法向Tabexercise发送指向特定标签的意图?

4 个答案:

答案 0 :(得分:4)

将意图发送到Tabexercise以及选项卡的索引,如下所示:

Intent i = new Intent(this, TabExercise.class);
i.putExtra("tab_index","1");
startActivity(i);
onCreate() Tabexercise内的

通过读取您传递的参数来设置当前标签:

TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost); //Assuming that you are setting your tabHost like this
Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("tab_index");
    if(value.equals("1"){
        tabHost.setCurrentTab(Integer.valueOf(value)); 
    }
    //and so on ...

}

希望这有帮助。

答案 1 :(得分:0)

在您发送给TabExercise的意图中,您可以发送要加载的tabindex,然后拨打setCurrentTab (int index)。你尝试过这样的事吗?

答案 2 :(得分:0)

尝试在你的开始意图上做这样的事情

intent.putExtra("notificationsTab",true);

然后在您托管标签的活动的onCreate方法中,检查一下是否属实。

int notificationsTab = 3;
if(getIntent().getBooleanExtra("notificationsTab")) tabHost.setCurrentTab(notificationsTab);

答案 3 :(得分:0)

Intent intHome = new Intent().setClass(this, MainActivity.class);
    intHome.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
    TabSpec tabhome = tabHost
      .newTabSpec("Home")
      .setIndicator("Home", ressources.getDrawable(R.drawable.house))
      .setContent(intHome);


    Intent intfav = new Intent().setClass(this, Favourite.class);
    intfav.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
    intfav.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    TabSpec tabfav = tabHost
      .newTabSpec("Settings")
      .setIndicator("FAVOURITE", ressources.getDrawable(R.drawable.star))

      .setContent(intfav);

    Intent intinfo = new Intent().setClass(this, Information.class);
    TabSpec tabinfo = tabHost
      .newTabSpec("Settings")
      .setIndicator("INFO", ressources.getDrawable(R.drawable.about))
      .setContent(intinfo);

    tabHost.addTab(tabhome);
    tabHost.addTab(tabfav);
    tabHost.addTab(tabinfo);
    tabHost.setCurrentTab(0);

并且您说要重新加载活动,因此use可以使用onResume()或onPause()方法重新加载活动。

希望它能帮到你