【问题标题】:Open recent fragment Bottom Navigation Activity打开最近的片段底部导航活动
【发布时间】:2019-12-16 00:03:48
【问题描述】:

我有一个带有 3 个菜单(片段)的底部活动。主页、新闻和设置。在设置中有另一个菜单 (ListView) 。简介、关于我们和联系我们。

如果您单击 Profil,它将打开新活动 (Profil.Class)。

我的问题是如何打开最近的选项卡(设置),因为现在如果我单击工具栏上的后退按钮和后退箭头,它将使用home fragment 而不是 settings framgent 打开我的底部活动。我试图从我的SettingFragment 发送putExtra();,但它不起作用。我怎样才能做到这一点?

这是我的 MainActivity

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = getSupportActionBar();
    BottomNavigationView navigation = findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);


    Intent intent = getIntent();
    Integer tabtoOpen = intent.getIntExtra("Tab",0);
    Log.d("TABB", tabtoOpen.toString());

    if(tabtoOpen == 0){
        fragment = new MainFragment();
    }else if(tabtoOpen == 1){
        fragment =  new NewsFragment();
    }else if(tabtoOpen == 2){
        fragment =  new SettingsFragment();
    }

    loadFragment(fragment);
}

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                toolbar.setTitle("Home | " +getString(R.string.app_name));
                fragment = new MainFragment();
                loadFragment(fragment);
                return true;
            case R.id.navigation_news:
                toolbar.setTitle("News | " +getString(R.string.app_name));
                fragment = new NewsFragment();
                loadFragment(fragment);
                return true;
            case R.id.navigation_setting:
                fragment = new SettingsFragment();
                loadFragment(fragment);
                toolbar.setTitle("Setting | " +getString(R.string.app_name));
                return true;
        }
        return false;
    }
};

    private void loadFragment(Fragment fragment) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.frame_container, fragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }

这是我的个人资料

public void onBackPressed() {
    Intent i = new Intent(this, Activity_main.class);
    i.putExtra("Tab", 2);
    this.startActivity(i);
}

【问题讨论】:

  • 你的onResume 代码是什么?

标签: android


【解决方案1】:

您可以使用 setSelectedItemId() 设置您希望选择的任何导航项。

else if(tabtoOpen == 2){
navigation.setSelectedItem(R.id.navigation_setting);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 2021-11-24
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    相关资源
    最近更新 更多