我有一个主要活动是一个搜索界面,当用户点击列表中的结果时,结果详细信息显示在Fragment
中。主活动有一个操作栏,但在详细信息片段中,操作栏被隐藏。要隐藏片段中的操作栏,我将从片段活动中调用主活动中的方法,如下所示:((SearchInterface)getActivity()).hideABar();
。然后,当用户单击后退按钮时,它们将返回搜索界面并再次显示操作栏。这样做比简单地调用方法要复杂一些。我在主活动中设置Interface
并覆盖片段中的方法,如下所示:
主要活动:
public interface Callback {
public void onBackPressedCallback();
}
@Override
public void onBackPressed() {
super.onBackPressed();
if(fragBackPressed != null)
fragBackPressed.onBackPressedCallback();
checkActionBarState();
}
...
public void checkActionBarState(){
bar_AB = getSupportActionBar();
boolean barVisible = bar_AB.isShowing();
if(barVisible){
Toast.makeText(getApplicationContext(),"ActionBar WAS Visible",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),"ActionBar WAS NOT Visible",Toast.LENGTH_LONG).show();
bar_AB.show();
}
}
片段:
@Override
public void onBackPressedCallback() {
Log.d("SSIVideoFrag", "checking action bar state");
}
现在,当用户在详细信息片段中按下“返回”按钮时,它们将返回“主要活动”并再次显示操作栏。现在我想在Details Fragment中添加一个按钮来执行单击Back按钮的操作,但我无法弄清楚如何执行此操作。我不知道如何在按钮的onClick中覆盖onBackPressedCallback()
方法:
back_BTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//--- what to do here?
}
});
答案 0 :(得分:1)
简单:
getFragmentManager().popBackStack();
https://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()
ps:这不是真正的背压,你的onBackPressed
将不会被调用。但是片段将被移除,就像在背压中一样。