Android 按Fragment Back按钮调用哪个方法或如何调用用户定义的函数

Android 按Fragment Back按钮调用哪个方法或如何调用用户定义的函数,android,android-fragments,backbone-events,Android,Android Fragments,Backbone Events,我有一个Actionbar Sherlock活动和3个Actionbar选项卡。第二个选项卡有两个片段A和B。片段A有列表日历,片段B有任务添加功能。当我单击片段A列表日历项时,它将转到片段B。然后我在片段B中添加一些任务,然后按“上一步”按钮返回重定向片段A很好。我的问题是当我从片段B返回到片段A时调用了哪个方法,并且当返回到片段A时我更新了任务细节 ActionbarActivityclass: 当我选择第二个Actionbar选项卡时,它有两个片段ListCalendarFragment和

我有一个Actionbar Sherlock活动和3个Actionbar选项卡。第二个选项卡有两个片段A和B。片段A有列表日历,片段B有任务添加功能。当我单击片段A列表日历项时,它将转到片段B。然后我在片段B中添加一些任务,然后按“上一步”按钮返回重定向片段A很好。我的问题是当我从片段B返回到片段A时调用了哪个方法,并且当返回到片段A时我更新了任务细节

ActionbarActivityclass:

当我选择第二个Actionbar选项卡时,它有两个片段ListCalendarFragment和TaskFragment。首先我添加这两个片段。然后我隐藏TaskFragment并仅显示ListCalendarFragmnet

当我单击列表日历项时,它将调用一个监听器,该监听器可用于显示任务片段以及隐藏列表日历片段

ListItemClickListener:接口

ActionbarActivityclass实现ListItemClickListener。 此功能显示任务日历并隐藏列表日历

@Override
public void onListClick() {

    fragmanager = getSupportFragmentManager();
    fragmentrans = fragmanager.beginTransaction();
    fragmentrans.hide(fragmentListCalendar);
    fragmentrans.show(fragmentTask);
    fragmentrans.addToBackStack(null);
    fragmentrans.commit();

}
我的问题是,当我通过单击“上一步”按钮返回列表日历时,会调用哪个生命周期方法,或者如何调用列表日历片段中的用户定义方法。因为我需要刷新列表日历片段中的列表日历适配器。谢谢


我希望我正确地理解了你的问题。下面是我如何解决类似问题的:

为片段B创建一个如下所示的接口:

public interface FragmentBListener {
    public void onBackButtonPressed();
}
@Override
public void onBackButtonPressed() {
    Log.i(TAG, "onBackButtonPressed()");    

    // Do something, e.g. reload Fragment A
}
然后,在onCreateView上面的片段B中实例化它,在这里实例化小部件,等等:

FragmentBListener mCallback;
然后,在片段B中,无论何时,只要您想返回,或取消或其他什么,都可以调用:

mCallback.onBackButtonPressed();
当然,该接口是在您的主活动或您选择的任何活动中实现的,因此应该有这样一种方法:

public interface FragmentBListener {
    public void onBackButtonPressed();
}
@Override
public void onBackButtonPressed() {
    Log.i(TAG, "onBackButtonPressed()");    

    // Do something, e.g. reload Fragment A
}

希望这能有所帮助。

嘿,谢谢你的回答,但它是如何工作的。当我按“后退”按钮时,界面会自动调用。
@Override
public void onBackButtonPressed() {
    Log.i(TAG, "onBackButtonPressed()");    

    // Do something, e.g. reload Fragment A
}