android - 可以像这样将参数传递给 fragment 吗?

标签 android android-fragments

我在一个项目中发现了以下代码(变量/类名已更改):

private FragmentParams params;

public static MyFragment newInstance(FragmentParams params) {
    MyFragment fragment = new MyFragment();
    fragment.params = params; // <- Manually setting params in fragment class
    return fragment;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.my_fragment, container, false);
    ButterKnife.bind(this, view);

    /* The following line initializes a class responsible for the user 
    interface. The params are used for that purpose. However, out of
    nowhere, the params where null 2 times.*/

    presenter.setParams(params);
    return view;
}

该项目已经运行了几个星期,当 presenter 访问参数时报告了一些 NullPointerException(在代码的后面)。

我知道正确的方法是使用setArguments(),但是我想问的问题是:尖线会不会有问题?

我唯一能想到的是,Android 出于某种原因重新创建了 fragment ,并且 params 由于方法 newInstance 变成了 null > 未被调用,因此 params 未设置。

最佳答案

您还可以尝试将 fragment 保留实例状态设置为 true,每当重新创建 Activity 时,它都会将 fragment 的实例保留在 fragment 管理器中。

https://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)

关于android - 可以像这样将参数传递给 fragment 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454998/

相关文章:

java - Shaperenderer 崩溃 libgdx

android - Mobile Vision API (TEXT) 未检测到单个数字?

android - 按下按钮时如何更改文本颜色?

java - 未找到 ID 为 0x7f090058 的 fragment 的 View

java - 从 Activity 调用 Fragment 的适配器时出现 NullPointerException

java - 在新 Activity 中找不到 id 的 View

android - 应用类什么时候被杀死

android - 是否可以在 Android 中共享音频输入(麦克风)流?

Android获取当前 fragment 的ID

android - 在具有选项卡布局的 Viewpager 中将 View 滑回时如何再次显示带有数据的 fragment ?