1

我正在开发这个 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

4 回答 4

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 ...

}

希望这可以帮助。

于 2013-07-18T07:25:57.137 回答
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);

并且您说您想重新加载活动,因此用户可以使用 onResume() 或 onPause() 方法重新加载该特定活动的活动。

希望对你有帮助

于 2013-07-18T07:31:29.960 回答
0

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

于 2013-07-18T07:23:13.187 回答
0

尝试在您的初始意图上做这样的事情

intent.putExtra("notificationsTab",true);

然后在onCreate托管选项卡的活动中的方法中,检查它是否为真。

int notificationsTab = 3;
if(getIntent().getBooleanExtra("notificationsTab")) tabHost.setCurrentTab(notificationsTab);
于 2013-07-18T07:23:53.983 回答