我有两个片段,第一个叫做Summer Jobs Fragment,它包含一个项目列表,第二个叫做Summer Jobs Details Frgment,其中包含每个项目的详细信息。我试图设置回跟踪,以便当我按下Summer Jobs Detail Fragment的后退按钮时,我会回到Summer Jobs Fragment。
这是我从SJF到SJDF的初步过渡的代码:
public void onItemClick(
AdapterView<?>parent,View view, int position, long id) {
SummerJobDetailsFragment.mMyAppsBundle.
putInt("value", position);
SummerJobDetailsFragment fragment =
new SummerJobDetailsFragment();
FragmentManager fragmentManager =
getFragmentManager();
list.setVisibility(parent.INVISIBLE);
fragmentManager.beginTransaction().replace(R.id.displayjobs_detailed, fragment).
addToBackStack( "tag" ).commit();
}
以下是我在main中修改OnBackPressed()的方法:
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (getFragmentManager().getBackStackEntryCount() > 0 ) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
但是当我按下SJDF的后退键时,我得到一个空白屏幕:
答案 0 :(得分:3)
fragmentTransaction.addToBackStack()&lt; - 不要在第一个片段中包含此内容.--&gt;
if(getSupportFragmentManager().getBackStackEntryCount() !=1){
fragmentTransaction.addToBackStack(null);
}
答案 1 :(得分:2)
只需在您的活动中使用此代码:
@Override
public void onBackPressed() {
getFragmentManager().executePendingTransactions();
int count = getFragmentManager().getBackStackEntryCount();
if (count <= 1) {
finish();
} else {
getFragmentManager().popBackStack();
}
}
也许您需要使用getSupportFragmentManager()代替。
答案 2 :(得分:0)
在这种情况下,请在onResume()
方法中填充ListView,例如
@Override
public void onResume() {
super.onResume();
CustomAdapter customAdapter = new CustomAdapter(this, R.layout.itemlistrow, List<yourItem>);
yourListView.setAdapter(customAdapter);
}