访问片段中的活动变量

时间:2017-02-20 20:14:36

标签: java android android-fragments android-activity android-fragmentactivity

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

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

2 个答案:

答案 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