0

次のコードを使用して、タブ内の ActivityGroup から新しいタブでアクティビティを起動しています。

    TabHost mTabHost = TabsFragment.getTabHost();    
    mTabHost.setCurrentTab(2);
    Intent i = new Intent(Downloader.this,Test.class);
    replaceContentView(Test.class.getName(),i);
    public void replaceContentView(String id, Intent newIntent) {
        View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
this.setContentView(view);}

このコードでは、新しいタブに切り替えることができますが、Test アクティビティの oncreate() を呼び出す前に、現在の ActivityGroup の oncreate() が呼び出されているという問題があります。その後、Test.class の oncreate() が呼び出されますが (ログで確認)、Test アクティビティではなく、新しいタブに Downloader アクティビティが引き続き表示されます。

上記の理由を見つけることができなかったのに、なぜこれが起こるのですか?

同じ問題を解決するための助けをいただければ幸いです。

4

1 に答える 1

1

現在のアクティビティが親アクティビティの真上にある場合は、アクティビティ スタックに依存します。現在のアクティビティを終了するだけで、前のアクティビティに移動します。すべてのアクティビティ スタックをクリアして、新しいアクティビティを最初からやり直したい場合は、

Intent intent1 = new Intent(context, activity.class);
             intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
             intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
            startActivity(intent1);
于 2013-03-07T18:34:21.420 に答える