나는 popbackstack 문제를 많이 겪어 왔고, 내 코드를 기반으로하면 내가해야 할 일이 효과가있다.onBackPressed() popBackStack 문제
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content_frame, new MainFragment());
ft.addToBackStack("Attend"); //here is the add to backstack
ft.commit();
}
내 빈 레이아웃 내에 내 주요 조각을 표시합니다.
나중에 새 조각을 시작하는 onOptionsItemSelected가 있습니다.
FragmentManager fm1 = getFragmentManager();
FragmentTransaction ft1 = fm1.beginTransaction();
ft1.replace(R.id.content_frame, new ServiceFragment());
ft1.addToBackStack("ServiceTimes");
ft1.commit();
return true;
이 조각이 나타납니다. 여기에 문제가 시작됩니다. 나는 메인 프래그먼트로 돌아갈 것을 기대하면서 뒤로 버튼을 누른다.
@Override
public void onBackPressed() {
FragmentManager fm = getFragmentManager();
if(fm.getBackStackEntryCount() > 0) {
Toast.makeText(getApplicationContext(),"popstack",Toast.LENGTH_SHORT).show();
fm.popBackStackImmediate("Attend", fm.POP_BACK_STACK_INCLUSIVE);
} else {
Toast.makeText(getApplicationContext(),"Super",Toast.LENGTH_SHORT).show();
super.onBackPressed();
}
}
나는 무슨 일이 일어 났는지 저를 보여주기 위해 토스트 팝업을 추가하고, 다시 버튼을 누를 때 나는 나에게 말하는 ("popstack"토스트 메시지와 함께 빈 흰색 화면을 얻을 문이 정확한지 "만일" ". 때 내가 (다시 내가 기대하는 것입니다) 다시 내가 "슈퍼"를 얻을했다. 내 코드는 늘 주요 조각으로 돌아가 왜
내가 이해가 안 돼요? 키가 기억해야 할
정말 고마워요. POP_BACK_STACK_INCLUSIVE이 (가) 깨달았습니다. 나는 fm.popBackStackImmediate()로 바 꾸었습니다. – Michael