1

私のアプリには、1 と 2 という 2 つのアクティビティを含む 1 つのタブがあります。アクティビティ 1 は、A という 1 つの子アクティビティを持つ ActivityGroup を拡張します。シナリオは、最初のタブで --> アクティビティ 1 とその子アクティビティ A のようになります。 2 番目のタブ --> アクティビティ 2。最初のタブのアクティビティ 1 でいくつかの機能を実行した後、ユーザーは最初のタブの子アクティビティ A に移動します。ユーザーが子アクティビティ A から戻るボタンを押すと、ユーザーは親アクティビティ 1 に戻る必要があります。どうすればよいですか? 以下は私のコードです..

MainActivity.java

public class MainActivity extends TabActivity {

    TabHost tabHost;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Resources ressources = getResources(); 
        tabHost = getTabHost(); 

        Intent intentProfile = new Intent().setClass(this, Tab1.class);
        TabSpec tabProfile = tabHost
          .newTabSpec("Profile")
          .setIndicator("Profile", ressources.getDrawable(R.drawable.ic_launcher))
          .setContent(intentProfile);

        Intent intentFriends = new Intent().setClass(this, Tab2.class);
        TabSpec tabFriends = tabHost
          .newTabSpec("Friends")
          .setIndicator("Friends", ressources.getDrawable(R.drawable.ic_launcher))
          .setContent(intentFriends);


        tabHost.addTab(tabProfile);
        tabHost.addTab(tabFriends);

        tabHost.setCurrentTab(0);

    }


    public void switchTabBar(int tab) {
        tabHost.setCurrentTab(tab); 
    }
    @Override
      public void onBackPressed() {
        // Called by children
        MainActivity.this.finish();
        }

}

Tab1.java

public class Tab1 extends ActivityGroup {

    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab1);
        btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent in = new Intent(Tab1.this, Second.class);
                replaceContentView("activity3", in);
            }
        });
    }

    public void replaceContentView(String id, Intent newIntent) 
    {
        View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); this.setContentView(view);
    }

     @Override
        public void onBackPressed() {
          this.getParent().onBackPressed();   
        }

}

Second.java

 public class Second extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.second);
        }

        @Override
        public void onBackPressed() {
          this.getParent().onBackPressed();   
          MainActivity parentTab = (MainActivity) this.getParent();
          parentTab.switchTabBar(0);
        }
    }

Tab2.java

public class Tab2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab2);
    }


    @Override
    public void onBackPressed() {
    // this.getParent().onBackPressed();
         MainActivity parentTab = (MainActivity) this.getParent();
         parentTab.switchTabBar(0);

    }
}

ここでは、戻るボタンを押すと、タブ 2 からタブ 1 に移動できます。しかし、タブ1の子アクティビティから親アクティビティに戻ることはできません。

4

2 に答える 2

0

タブ 1:

    @Override
    public void onBackPressed() {
      super.onBackPressed();   
    }

    @Override
    public void onPause() 
    {
      super.onPause();
       finish();
    }

タブ1で

于 2013-09-16T08:56:06.577 に答える
0

親アクティビティの戻るボタンをオーバーライドし、子から呼び出す必要があります。詳細については、このリンクを確認してください: ActivityGroup 内のアクティビティ間を移動する

于 2013-09-16T08:53:16.747 に答える