1

如果我有一个活动A扩展了基本活动BA,那么我可以安全地从活动A访问活动BA中的任何变量。现在我正在使用的是包含活动A,其中包含片段F 现在从这个片段中,我想以同样的方式访问A的所有变量,就像我在上面做的那样,如果不是,那么除了通过公共方法提供它之外,还有一个安全的方法。片段中的访问活动变量

或者有没有一种方法可以将基本活动中的变量复制到基本片段,以便在所有活动和片段中都可用。

+3

你应该张贴您的代码为更好地理解 –

+0

之间的通信一直在寻找同样 –

+0

HTTP:/ /stackoverflow.com/questions/12364434/android-how-can-fragment-take-a-global-variable-of-activity –

回答

0

如果VARIABLE_NAME是在你的活动A一个变量,可以从外面的活动进行访问A

然后使用此代码:

((A)this.getActivity()).VARIABLE_NAME //this refers to your fragment 
3

的一个好办法实现它使用一个接口,官方文件建议。

要允许片段最多传达到它的活动,您可以定义 片段中的类的接口和 活动中实现它。

所以,基本上你的片段里,你定义一个接口是这样的:

public interface MyListener { 
    public void onAction(); 
} 

,并(在片段仍然)定义类型的字段MyListener

MyListener mCallback; 

然后你可以设置此听众使用onAttach(Activity)方法:

mCallback = (MyListener) activity; 
现在

,你想每次再从片段中调用活性的方法,你可以使用回调:

mCallback.onAction(); 

当然,你的活动需要实现的接口,否则施法时,你会得到一个异常的活动给MyListener。

所以,只是做:

public class MyActivity extends Activity implements MyFragment.MyListener { 
    @Override 
    public void onAction() { 
     // some stuff 
    } 
} 

了解更多详细看看documentation大约片段

+0

我上面试过,但在这种情况下(即OP的情况下),它没用......因为最后你必须在Activity中使用getter方法,所以不需要实现这个接口类型层次结构。当您希望跨片段访问/发送值,即从一个片段到另一个片段时,您的示例实际上非常有用 –