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

Posted

技术标签:

【中文标题】在android中按下后退按钮后如何返回相同的选项卡?【英文标题】:How to return to same tab after pressing back button in android? 【发布时间】:2018-05-08 02:11:21 【问题描述】:

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

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

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;
    


    

公共类 Fragment_Tab_2 扩展 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;




【问题讨论】:

如果您没有任何相互依赖的数据 Activity 然后再次调用该 Activity.. 否则您也可以将数据传递给 Intent 和 OnActivity 的结果,您可以使用所需的数据调用 Agian。 我现在正在做的是从活动 2 中的 onKeyDown 方法调用活动 1,当它显示选项卡 1 时,我想显示选项卡 2。 这完全取决于您最初如何调用 Activity 来获取数据。请在此处发布一些代码,您首先如何处理您的活动.. 【参考方案1】:

您可以为此目的使用多种方法。 Activity 恢复时何时显示哪个选项卡:

1.startactivityforresult :- 这是非常基本的你可以在“onActivityResult”中验证结果做什么。但请注意,如果您的 Activity 的启动模式为 singleInstance,它将不起作用。

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

3.eventbus :- 这是大型项目的黑白活动交流的最佳方式(需要大量交流)

【讨论】:

【参考方案2】:

试试这个:

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

也检查一下:

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

【讨论】:

以上是关于在android中按下后退按钮后如何返回相同的选项卡?的主要内容,如果未能解决你的问题,请参考以下文章

在颤动中按下移动后退按钮后网站应用程序未退出

如何禁用在android片段类中按下的后退按钮

如果在 Fragment 的 WebView 中按下后退按钮,如何返回上一页?

如果在 WebView 中按下后退按钮,如何返回上一页?

如果在 WebView 片段中按下后退按钮,如何返回上一页?

在移动 Safari 中按下后退按钮后,Javascript 停止在 iframe 中执行