如何解决片段无法在“后退”按钮上打开上一个片段
我一直在努力实现超简单的应用布局,其中我的MainActivity
以其Fragment#1
方法打开onCreate
,然后Fragment#1
打开Fragment#2
单击项目时。
截至目前,当我从Fragment#1
中打开MainActivity
时,我将Fragment#1
添加到BackStack中。打开Fragment#2
后,当我按下“后退”按钮时,第一次单击不执行任何操作,然后第二次单击使我一直返回登录页面,跳过了Fragment #1
和MainActivity
。 / p>
如何做到这一点,当我按下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();
}
}
解决方法
onCreate with
科特林
val backpress = requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner,true) {
// Handle the back button event
}
Java
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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。