Wun*_*Wun 75 android android-fragments activity-finish
我尝试使用Imagebutton关闭当前片段.
我在Fragment-A中,当我点击按钮时它将转向Fragment-B.
当我点击Fragment-B上的按钮时,它将转向Fragment-C并关闭Fragment-B.
如果我单击Fragment-C上的后退按钮,它将返回Fragment-A.
我尝试过的代码如下所示
camera_album = (ImageButton) view.findViewById(R.id.camera_album);
camera_album.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
closefragment();
Fragment fragment = FileBrowserFragment.newInstance(null, null, null) ;
MainActivity.addFragment(LocalFileBrowserFragment.this, fragment) ;
}
});
private void closefragment() {
getActivity().getFragmentManager().beginTransaction().remove(this).commit();
}
Run Code Online (Sandbox Code Playgroud)
当我点击片段B的后退按钮时,它会转到Fragment-C.
但是当我单击Fragment-C上的后退按钮时,它不会返回到Fragment-A.它回到了空背景.如果我想回到Fragment-A,我必须再次单击后退按钮.
所以,似乎并没有完成当前片段的关闭.
如何像Android的后退按钮一样完成当前片段?
Wun*_*Wun 115
我改变了代码 getActivity().getFragmentManager().beginTransaction().remove(this).commit();
至
getActivity().getFragmentManager().popBackStack();
Run Code Online (Sandbox Code Playgroud)
它可以关闭片段.
S.D*_*.D. 69
从片段A到B,用A替换A并使用addToBackstack()之前commit().
现在从Fragment B,到C,首先使用popBackStackImmediate(),这将带回A.现在用C替换A,就像第一次交易一样.
Vis*_*nan 57
对于那些需要弄清楚简单方法的人
尝试 getActivity().onBackPressed();
这是执行此操作的 Kotlin 方式,我在片段布局中创建了按钮,然后在 onViewCreated 中设置了 onClickListner。
根据@Viswanath-Lekshmanan 的评论
override fun onViewCreated(view: View?, savedInstanceState: Bundle?)
{
super.onViewCreated(view, savedInstanceState)
btn_FragSP_back.setOnClickListener {
activity?.onBackPressed()
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试这个:
public void removeFragment(Fragment fragment){
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.remove(fragment);
fragmentTransaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以尝试这个逻辑,因为它对我有用。
frag_profile profile_fragment = new frag_profile();
boolean flag = false;
@SuppressLint("ResourceType")
public void profile_Frag(){
if (flag == false) {
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
manager.getBackStackEntryCount();
transaction.setCustomAnimations(R.anim.transition_anim0, R.anim.transition_anim1);
transaction.replace(R.id.parentPanel, profile_fragment, "FirstFragment");
transaction.commit();
flag = true;
}
}
@Override
public void onBackPressed() {
if (flag == true) {
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
manager.getBackStackEntryCount();
transaction.remove(profile_fragment);
transaction.commit();
flag = false;
}
else super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182593 次 |
| 最近记录: |