Android 取回上一个片段
以下是我的代码片段: 我最初想创建一个新片段,但是如果片段已经创建,我想显示前面的片段 但每次一个新片段被初始化时Android 取回上一个片段,android,android-fragments,fragment,Android,Android Fragments,Fragment,以下是我的代码片段: 我最初想创建一个新片段,但是如果片段已经创建,我想显示前面的片段 但每次一个新片段被初始化时 @Override protected void onCreate(Bundle savedInstanceState) { . . showFragment(FRAGMENT_ADD_DETAILS); } @Override public boolean onOptionsItemSelected(MenuItem item) {
@Override
protected void onCreate(Bundle savedInstanceState) {
.
.
showFragment(FRAGMENT_ADD_DETAILS);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if(currentFragment==FRAGMENT_ADD_DETAILS){
finish();
}else{
showFragment(FRAGMENT_ADD_DETAILS);
}
break;
case R.id.menu_action_next:
showFragment(FRAGMENT_INVITE_FRIENDS);
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
.
.
return true;
}
private void showFragment(int fragmentType) {
Log.d(TAG,"showFragment : "+fragmentType);
FragmentManager fragmentManager = getFragmentManager();
Fragment prevFragment = fragmentManager.findFragmentByTag(String.valueOf(fragmentType));
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if (prevFragment == null) { //create a fresh instance of fragment
Log.d(TAG,"Initialize new fragment");
Fragment newFragment;
if (fragmentType == FRAGMENT_ADD_DETAILS) {
newFragment = new NewDetailsFragment();
} else {
newFragment = new NewInviteFragment();
}
fragmentTransaction.replace(R.id.ant_container_layout, newFragment);
fragmentTransaction.addToBackStack(String.valueOf(fragmentType));
} else {//just reuse the previous fragment
Log.d(TAG,"Re-Using previous fragment");
fragmentTransaction.replace(R.id.ant_container_layout, prevFragment);
}
fragmentTransaction.commit();
}
请帮忙 您从未向片段中添加任何标记,因此无法使用
findFragmentByTag()
找到它们
替换片段时,而不是
fragmentTransaction.replace(R.id.ant_container_layout, newFragment);
使用接受标记的重载方法:
fragmentTransaction.replace(R.id.ant_container_layout, newFragment, String.valueOf(fragmentType));
您尝试在活动的
onCreate()
中还原片段,但似乎没有保留片段。因此,它们将与活动一起销毁,当再次创建活动时,将创建新的片段。也许您需要发布更多代码。。。但是你肯定需要添加标签,因为你无法通过标签找到任何东西。从你发布的内容来看,调用此方法时很难说片段是否仍然存在。你从哪里打电话来的?看我的更新。我很难说出你到底需要做什么,因为这取决于你的具体需要。阅读更多关于片段生命周期、分离/附加片段等的信息。