[英]How to make media player stop when pressing device back button from a fragment back to activity
[英]How to get last Fragment used when pressing back button
我有一個簡單的代碼片段:
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
Fragment selectedFragment= null;
switch (menuItem.getItemId()){
case R.id.nav_home:
selectedFragment= new HomeFragment();
setTitle("Beranda");
break;
case R.id.nav_message:
selectedFragment= new MessageFragment();
setTitle("Pesan");
break;
case R.id.nav_transaction:
selectedFragment= new TransactionFragment();
setTitle("Transaksi");
break;
case R.id.nav_profile:
selectedFragment= new ProfileFragment();
setTitle("Profil");
if(sessionLevel.equals("admin")){
setTitle("Admin");
}
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment).commit();
return true;
}
};
大部分片段只是意圖活動的某種持有者。 活動本身沒有花哨的代碼。
問題是當我在Profile菜單上執行Intent然后按回去時,顯示的片段是HomeActivity
但是所選的按鈕是Profile
。 我不知道其他2個片段,因為我還沒有,但可能他們做的是相同的事情。
您可以按照以下步驟進行操作:
@Override
public void onBackPressed() {
super.onBackPressed();
Fragment frag = YourActivity.this.getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if(frag!=null && frag instanceof yourFragment)
{}
}
以下將給你數
int count = getSupportFragmentManager().getBackStackEntryCount();
您可以創建條件,如果count大於1,則有1個以上的片段,否則您至少有1個片段,這將是最后一個片段。 如果計數為0,則堆棧上不再有可用的片段,因為所有片段都已彈出堆棧。
public interface IOnBackPressed {
boolean onBackPressed();
}
public class FAQFragment extends Fragment implements IOnBackPressed {
public boolean onBackPressed() {
return false
}
}
@Override
public void onBackPressed(){
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStack();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.