2016-07-28 205 views
-2

我尝试了几次,从片段中调用MainActivity的Resume方法, 简单地调用onResume();没有任何结果。 代码恢复方法从片段继续活动

protected void onResume() { 
     all.clear(); 
     outgoing.clear(); 
     incoming.clear(); 
     getFromSdcard(); 
     super.onResume(); 
    } 

我想从片段调用此方法。

+0

活动包含一个片段。你需要什么来恢复它? –

+0

我已经写了一些恢复方法的逻辑,这就是为什么我想从碎片事件后调用。 –

+0

发布一些代码,所以我们现在可以尝试到目前为止所尝试的。 – FlyingPumba

回答

1

加强@ 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,

+0

它的工作完美,但我有其他解决方案只是在活动中创建一个静态方法,并简单地在片段中调用。 –

+2

嗨Piyush。即使这可行,强烈建议您不要使用静态方法来处理/处理Activity Lifecycle。这是基于当然好设计的原则!应该使用静态方法来处理数据并执行不受生命周期约束的操作。例如,你可以声明一个public static int getTwice(int value);因为它的目的仅仅是计算而不是绑定到任何东西(你只需要在数字上调用方法,并且它给了你那个数字的两倍,就这么简单)。无论哪种方式,您都可以使用静态方法来完成 –

0

您所呼叫的片段onResume()

你可以试试getActivity().onResume(),但你真的应该做的方法去做任何你需要的代码,而不是显式调用生命周期方法。

+0

我试过了,但出现错误“方法是父类中的受保护访问”。 –