在Android中,使用Button onClick覆盖方法

时间:2014-09-09 14:53:03

标签: android android-fragments

我有一个主要活动是一个搜索界面,当用户点击列表中的结果时,结果详细信息显示在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?


        }
    });

1 个答案:

答案 0 :(得分:1)

简单:

getFragmentManager().popBackStack();

https://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()

ps:这不是真正的背压,你的onBackPressed将不会被调用。但是片段将被移除,就像在背压中一样。