如果我有一个扩展基本活动BA的活动A,那么我能够安全地从活动A访问活动BA中的任何变量。我现在使用的是包含片段F的活动A. 现在从这个片段我想以相同的方式访问A的所有变量,就像我上面所做的那样,如果没有,除了通过公共方法使它可用之外,还有一种安全的方法。
或者有没有办法可以将基本活动中的变量复制到基本片段,以便在所有活动和片段中都可用。
答案 0 :(得分:3)
实现它的一个好方法是使用界面,正如官方文档所示。
要允许片段与其活动进行通信,您可以定义 Fragment类中的一个接口,并在其中实现它 活性。
因此,基本上在你的片段中你定义了一个这样的界面:
public interface MyListener {
public void onAction();
}
并定义(仍在片段中)MyListener
MyListener mCallback;
然后,您可以使用onAttach(Activity)
方法设置此侦听器:
mCallback = (MyListener) activity;
现在,每次想要从片段中调用活动中的方法时,您都可以使用回调:
mCallback.onAction();
当然,您的Activity需要实现该接口,否则在将您的活动转换为MyListener时会出现异常。
所以,就这样做:
public class MyActivity extends Activity implements MyFragment.MyListener {
@Override
public void onAction() {
// some stuff
}
}
有关详细信息,请查看有关片段之间通信的documentation
答案 1 :(得分:1)
如果VARIABLE_NAME
是您的活动ACTIVITY_NAME
中的变量,可以从活动ACTIVITY_NAME
外部访问
然后使用此代码:
((ACTIVITY_NAME)this.getActivity()).VARIABLE_NAME //this refers to your fragment