如何在android中按回按钮后返回相同的选项卡?

时间:2017-11-24 05:28:37

标签: android android-fragments back-button android-tabs

我在我的Android应用程序中有两个活动:

活动A:它有一个带有3个标签的标签导航视图。当用户将屏幕从选项卡1滑动到选项卡2时,选项卡2视图显示一个转到“活动”的按钮。

2。 我想要做的是当我按下活动2中的后退按钮时,应用程序在选项卡2上显示活动1而不是现在正在发生的选项卡1。 希望有任何帮助。 提前谢谢。

在我的代码下面。请注意,我避免使用某些代码。

public class Activity1 extends ActionBarActivity
    implements ActionBar.TabListener,ViewPager.OnPageChangeListener,NavigationDrawerFragment.NavigationDrawerCallbacks {
        @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_one);
    PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
     ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

     tab = actionBar.newTab().setText(R.string.tab_one).setTabListener(this);
    actionBar.addTab(tab);

    tab = actionBar.newTab().setText(R.string.tab_two).setTabListener(this);
    actionBar.addTab(tab);

    tab = actionBar.newTab().setText(R.string.tab_three).setTabListener(this);
    actionBar.addTab(tab);


}
public class PagerAdapter extends FragmentPagerAdapter {

    public PagerAdapter(FragmentManager fm) {
        super(fm);
    }

    public Fragment getItem(int arg0) {
        switch (arg0) {
            case 0:
                tab.getPosition();
                return new Fragment_Tab_1();
            case 1:
                tab.getPosition();
                return new Fragment_Tab_2();
            case 2:
                tab.getPosition();
                return new Fragment_Tab_3();
            default:
                return null;
        }
    }

    public int getCount() {
        return 3;
    }

}
    }

public class Fragment_Tab_2 extends Fragment {         按钮show_activity2;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        bundle = savedInstanceState;
        container2 = container;
        if (container == null) {
            return null;
        }
        LinearLayout relative_layout = (LinearLayout) inflater.inflate(R.layout.fragment_Tab_2, container, false);
        context = relative_layout.getContext();
        show_activity2 = (ImageButton) relative_layout.findViewById(R.id.show_activity2);
        show_activity2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

                Intent intent = new Intent(getActivity(), Activity2.class);
                startActivity(intent);

        }
    });

        return relative_layout;
    }

}

public class Activity2 extends Activity {



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

}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)){

        Intent intent = new Intent(Activity2.this,Activity1.class);
            startActivity(intent);
            finish();


    }


    return true;
}


}

2 个答案:

答案 0 :(得分:1)

您可以使用多种方法来实现此目的。何时显示活动恢复时的哪个标签:

1。startactivityforresult: - 这是非常基础的,您可以在" onActivityResult"中验证结果。该怎么办。但请注意,如果您的活动的启动模式为 singleInstance ,则无效。

2. localbroadcastmanager: - 您可以为该操作发起本地广播。

3. eventbus: - 这是为大型项目传达黑白活动的最佳方式(需要大量沟通的地方)

答案 1 :(得分:0)

试试这个:

tabHost.setCurrentTab(number of tab you want to go);

同时检查:

Android Tab Help. How to set 2nd tab as default when app opens?