如果我有一个活动A扩展了基本活动BA,那么我可以安全地从活动A访问活动BA中的任何变量。现在我正在使用的是包含活动A,其中包含片段F 现在从这个片段中,我想以同样的方式访问A的所有变量,就像我在上面做的那样,如果不是,那么除了通过公共方法提供它之外,还有一个安全的方法。片段中的访问活动变量
或者有没有一种方法可以将基本活动中的变量复制到基本片段,以便在所有活动和片段中都可用。
如果我有一个活动A扩展了基本活动BA,那么我可以安全地从活动A访问活动BA中的任何变量。现在我正在使用的是包含活动A,其中包含片段F 现在从这个片段中,我想以同样的方式访问A的所有变量,就像我在上面做的那样,如果不是,那么除了通过公共方法提供它之外,还有一个安全的方法。片段中的访问活动变量
或者有没有一种方法可以将基本活动中的变量复制到基本片段,以便在所有活动和片段中都可用。
如果VARIABLE_NAME
是在你的活动A
一个变量,可以从外面的活动进行访问A
然后使用此代码:
((A)this.getActivity()).VARIABLE_NAME //this refers to your fragment
的一个好办法实现它使用一个接口,官方文件建议。
要允许片段最多传达到它的活动,您可以定义 片段中的类的接口和 活动中实现它。
所以,基本上你的片段里,你定义一个接口是这样的:
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大约片段
我上面试过,但在这种情况下(即OP的情况下),它没用......因为最后你必须在Activity中使用getter方法,所以不需要实现这个接口类型层次结构。当您希望跨片段访问/发送值,即从一个片段到另一个片段时,您的示例实际上非常有用 –
你应该张贴您的代码为更好地理解 –
之间的通信一直在寻找同样 –
HTTP:/ /stackoverflow.com/questions/12364434/android-how-can-fragment-take-a-global-variable-of-activity –