[英]Fragment not Opening Previous Fragment on Back Button
我一直在努力实现一个超级简单的应用程序布局,其中我的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();
}
}
在创建时
科特林
val backpress = requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, true) {
// Handle the back button event
}
爪哇
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
@Override
public void handleOnBackPressed() {
// Handle the back button event
}
});
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
您可以在相关部分提供您的后台操作。
getSupportFragmentManager().beginTransaction().replace(R.id.frag_frame, fragment).addToBackStack("text").commit();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.