从片段继续活动
我尝试了几次,从片段中调用MainActivity的Resume方法, 简单地调用onResume();
没有任何结果。 代码恢复方法从片段继续活动
protected void onResume() {
all.clear();
outgoing.clear();
incoming.clear();
getFromSdcard();
super.onResume();
}
我想从片段调用此方法。
加强@ cricket_007响应:
您可以调用的onResume从父活动,但就像你所看到的,的onResume已保护访问从调用它阻止你。
有一个小的知名度解决方法,可以让你做到这一点。
1 - 实现你的活动这种方法
public void myOnResume(){
this.onResume();
}
2 - 然后在你的片段,你可以调用
public void myFragmentMethod(){
// make sure to double check casts (to YourActivity) like these before invoking
((YourActivity) getActivity()).myOnResume();
}
结论和建议:即使它不是建议你这样实施,可以像我说的那样完成。
在我看来,你应该做的是:
1 - 有你所有的的onResume的)的功能(你自己(你的名字!)喜欢的适当的方法内方法:
public void clearData() {
all.clear();
outgoing.clear();
incoming.clear();
getFromSdcard();
}
2 - 然后,你可以只单独所有这些来自的onResume()功能,而且还有他们援引像
protected void onResume() {
super.onResume();
clearData();
}
3 - 调用它在你的片段像(前面所示)
public void myFragmentMethod(){
// make sure to double check casts (to YourActivity) like these before invoking
((YourActivity) getActivity()).clearData();
}
让我知道如何去。 Regards,
它的工作完美,但我有其他解决方案只是在活动中创建一个静态方法,并简单地在片段中调用。 –
嗨Piyush。即使这可行,强烈建议您不要使用静态方法来处理/处理Activity Lifecycle。这是基于当然好设计的原则!应该使用静态方法来处理数据并执行不受生命周期约束的操作。例如,你可以声明一个public static int getTwice(int value);因为它的目的仅仅是计算而不是绑定到任何东西(你只需要在数字上调用方法,并且它给了你那个数字的两倍,就这么简单)。无论哪种方式,您都可以使用静态方法来完成 –
您所呼叫的片段onResume()
你可以试试getActivity().onResume()
,但你真的应该做的方法去做任何你需要的代码,而不是显式调用生命周期方法。
我试过了,但出现错误“方法是父类中的受保护访问”。 –
活动包含一个片段。你需要什么来恢复它? –
我已经写了一些恢复方法的逻辑,这就是为什么我想从碎片事件后调用。 –
发布一些代码,所以我们现在可以尝试到目前为止所尝试的。 – FlyingPumba