【问题标题】:Switch between activities without restarting or reloading the activity在活动之间切换而无需重新启动或重新加载活动
【发布时间】:2020-07-09 00:06:05
【问题描述】:

我在我的应用程序中使用了底部导航。我有 2 个菜单项(主页、搜索)。每次用户尝试从其他活动切换回家庭活动时,我都不想重新启动家庭活动。我尝试在我的意图中添加 FLAG_ACTIVITY_REORDER_TO_FRONT 但它不起作用。

搜索活动

 bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()){
                case R.id.home:
                    Intent intent = new Intent();
                    startActivity(new Intent(getApplicationContext(),MainActivity.class));
                    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                    overridePendingTransition(0,0);
                    return true;
                case R.id.search:
                    break;
            return false;
        }
    });

【问题讨论】:

  • 你的意思是家庭片段不是活动?
  • 我没有使用家庭碎片。实际上我是android开发的新手。我只使用活动

标签: android android-intent android-activity bottomnavigationview


【解决方案1】:

你可以做这样的事情。在active 片段的帮助下,我们只是隐藏了活动片段,显示新片段。

MainActivty.java

public class MainActivity extends AppCompatActivity {

final Fragment fragment_home = new HomeFragment();
final Fragment fragment_search = new DashboardFragment();
final FragmentManager fm = getSupportFragmentManager();
Fragment active = fragment_home;

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


    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.nav_view);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

    fm.beginTransaction().add(R.id.nav_host_fragment, fragment_search, "fragment_search").hide(fragment_search).commit();
    fm.beginTransaction().add(R.id.nav_host_fragment, fragment_home, "fragment_home").commit();

}


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

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                fm.beginTransaction().hide(active).show(fragment_home).commit();
                active = fragment_home;
                return true;

            case R.id.navigation_dashboard:
                fm.beginTransaction().hide(active).show(fragment_search).commit();
                active = fragment_search;
                return true;
        }
        return false;
    }
};}

【讨论】:

  • @YunisRasulzda 我没有家庭片段。单击底部导航中的主页按钮会打开主活动。你能告诉我如何在不使用片段的情况下解决这个问题。
猜你喜欢
  • 2012-02-10
  • 2012-01-31
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
相关资源
最近更新 更多