【发布时间】:2015-09-22 15:03:18
【问题描述】:
我有一个片段的活动。当用户按下后退按钮时,我正在尝试执行一些代码。我正在尝试在活动类中使用此方法:
@Override
public void onBackPressed() {
super.onBackPressed();
}
然后我在我的片段中用这段代码覆盖它:
@Override
public void onBackPressed() {
((MyActivity)getActivity()).onBackPressed();
doStuff();
}
我在这里尝试做的是在片段的类中覆盖 onBackPressed 方法,然后让该方法首先在其活动中调用该方法,因为我无法调用 getActivity().super.onBackPressed()片段的 onBackPressed() 方法。我已经尝试过了,但它不起作用。在活动的类中,它很好地覆盖了该方法,但在片段的类中,编译器抱怨片段的 onBackPressed() 方法没有覆盖它的超类中的方法。所以,我的问题是,我怎样才能正确地做到这一点?这可能吗?
我可以解决我的问题的另一种方法是在我的活动中使用完整的 onBackPressed() 方法并让该方法调用我的片段的方法,但我不能这样做,因为我的片段没有 id (它由 FragmentPagerAdapter 生成)。
【问题讨论】:
-
我已经阅读了大部分答案,但据我所知,没有一个给出我需要的解决方案。我开始认为我正在尝试做的事情是不可能的。我还应该补充一点,当按下后退按钮时,我的程序不会破坏当前片段并转换到另一个片段。我的片段有一个显示图像元素的类,当按下后退按钮时,它会用新元素替换这些元素(所有这些元素都在同一个片段中)。我想我要做的是给我的片段一个标签或一个 ID,然后在我的片段中调用一个方法,该方法将从我的活动中完成工作。
标签: android-activity methods fragment