簡體   English   中英

使用向上按鈕導航回相應的片段

[英]Navigate back to the respective Fragment using up button

我已經實現了底層導航,其中包含三個頂級目標(每個目標一個片段): HomeSearchSettings 在搜索片段中,我有一個搜索按鈕,在點擊后,轉到另一個活動說ActivityX。 使用向上按鈕從ActivityX導航回來時,它會導航到Home而不是Search。 我希望向上按鈕導航到搜索。 怎么實現呢?

我的主要活動:

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

    sp=getSharedPreferences("login_details",MODE_PRIVATE);
    if(!sp.getBoolean("login_status", false)){
        isLoggedIn=false;
    }
    else
        isLoggedIn=true;

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    BottomNavigationView bottomNav = (BottomNavigationView) findViewById(R.id.navigation);
    fragmentManager=getSupportFragmentManager();
    android.support.v4.app.FragmentTransaction ft1=fragmentManager.beginTransaction();
    ft1.add(R.id.container,new HomeFragment());
    ft1.commit();
    updateToolbarText("Home");
    bottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            if(item.getItemId()==R.id.action_home){
                fragmentManager=getSupportFragmentManager();
                android.support.v4.app.FragmentTransaction ft1=fragmentManager.beginTransaction();
                ft1.replace(R.id.container,new HomeFragment());
                ft1.commit();

                updateToolbarText("Home");

            }
            if(item.getItemId()==R.id.action_search){
                fragmentManager=getSupportFragmentManager();
                android.support.v4.app.FragmentTransaction ft2=fragmentManager.beginTransaction();
                ft2.replace(R.id.container,new SearchFragment());
                ft2.commit();
                MainActivity.super.onBackPressed();
                updateToolbarText("Search");


            }
            if(item.getItemId()==R.id.action_settings){
                fragmentManager=getSupportFragmentManager();
                android.support.v4.app.FragmentTransaction ft3=fragmentManager.beginTransaction();
                ft3.replace(R.id.container,new SettingsFragment());
                ft3.commit();
                updateToolbarText("Settings");
            }
            return true;

        }

    });

}

在ActivityX中創建intent並將字符串放入其中。 該字符串包含您來自哪里的信息,即。 搜索,然后startActivity(ActivityX,MainActivity)。

然后在MainActivity中覆蓋onResume方法。 在此方法中,檢查intent是否包含您放入ActivityX的特定字符串。 如果它包含該字符串,請啟動SearchFragment

這是我的例子:

ActivityX:

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent intent = new Intent(FragmentTrainingDetail.this, MainActivity.class);
    intent.putExtra("TAG", "FragmentMyTraining");
    startActivity(intent);
    finish();
}

主要活動:

@Override
protected void onResume() {
    super.onResume();

    Intent intent = getIntent();

    if (intent.hasExtra("FragmentMyTraining")) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.content_frame, new FragmentMyTraining());
        fragmentTransaction.addToBackStack("my");
        fragmentTransaction.commit();
    } else if (intent.hasExtra("FragmentPopularTraining")) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.content_frame, new FragmentPopularTraining());
        fragmentTransaction.addToBackStack("pop");
        fragmentTransaction.commit();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM