【发布时间】:2021-01-17 07:24:15
【问题描述】:
我一直在努力实现一个超级简单的应用程序布局,我的MainActivity 在其onCreate 方法中打开Fragment#1,然后Fragment#1 在单击项目时打开Fragment#2。
目前,当我从我的MainActivity 打开Fragment#1 时,我会将Fragment#1 添加到BackStack。打开Fragment#2 后,当我点击返回按钮时,第一次单击什么也不做,然后第二次单击将我一路返回到我的登录页面,跳过Fragment #1 和MainActivity。
我怎样才能做到这一点,当我点击Fragment#2 上的返回按钮时,它会打开Fragment#1 备份?
(MainActivity 打开Fragment#1)
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
SearchListFragment fragment = new SearchListFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_fragment_container, fragment);
transaction.addToBackStack(TAG);
transaction.commit();
}
}
(Fragment#1 打开Fragment#2)
public class SearchListFragment extends Fragment {
public void viewResults(SearchModel search) {
Bundle args = new Bundle();
args.putString("ID", search.getId());
ResultsFragment fragment = new ResultsFragment();
fragment.setArguments(args);
FragmentTransaction transaction = getParentFragmentManager().beginTransaction();
transaction.replace(R.id.main_fragment_container, fragment);
transaction.commit();
}
}
编辑
我应该提到我已经尝试自己处理后按事件。我尝试将此添加到我的MainActivity,但它并没有改变行为:
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
this.finish();
} else {
getSupportFragmentManager().popBackStack();
}
}
【问题讨论】:
标签: java android android-fragments back-stack fragment-backstack