java - 访问 fragment 中的 Activity 变量

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

<分区>

如果我有一个扩展基本 Activity BA 的 Activity A,那么我可以安全地从 Activity A 访问 Activity BA 中的任何变量。我现在使用的内容包含一个 Activity A,其中包含一个 fragment F。 现在从这个 fragment 我想以相同的方式访问 A 的所有变量,就像我在上面所做的那样,如果没有,除了通过公共(public)方法使其可用之外,还有一种安全的方法可以做到这一点。

或者有没有一种方法可以将基本 Activity 中的变量复制到基本 fragment ,以便它在所有 Activity 和 fragment 中可用。

最佳答案

正如官方文档所建议的那样,实现它的一个好方法是使用接口(interface)。

To allow a Fragment to communicate up to its Activity, you can define an interface in the Fragment class and implement it within the Activity.

所以,基本上在你的 fragment 中你定义了一个这样的接口(interface):

public interface MyListener {
     public void onAction();
}

并定义(仍在 fragment 中)类型为 MyListener

的字段
MyListener mCallback;

然后你可以使用 onAttach(Activity) 方法设置这个监听器:

mCallback = (MyListener) activity;

现在,每次您想从 fragment 中调用 Activity 中的一个方法时,您都可以使用回调:

mCallback.onAction();

当然,您的 Activity 需要实现该接口(interface),否则在将 Activity 转换为 MyListener 时会出现异常。

所以,就这样做:

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

有关更多详细信息,请查看 documentation关于 fragment 之间的通信

关于java - 访问 fragment 中的 Activity 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353456/

相关文章:

java - Gmail api 范围和格式不匹配

java - 查找数字 600851475143 的最大质因数的更有效方法

java - 带有发布数据、用户名和密码的 curl url 以及作为文件的响应

java - 锁定 map Activity

android - 如何计算 Android 上 ScrollView 内的 GridView 所需的高度?

java - 在 FragmentTabHost 中,水平滑动手势起作用时,选项卡触摸不起作用

android - getSupportFragmentManager().findFragmentByTag() 返回 null

android - fragment 中的布局不居中

JSF 表中的 JavaScript 错误

java - 如何仅在构造函数中初始化变量一次?