由newInstance创建的新片段,始终具有错误的var值

时间:2018-12-02 15:08:31

标签: java android

我遇到了标题所说的问题。

public class NewsCategoryFragment extends Fragment{
    private String cateTitle;
    public static NewsCategoryFragment newInstance(String title){
        NewsCategoryFragment fragment = new NewsCategoryFragment();
        Bundle args = new Bundle();
        args.putString("title",title);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        xfReaderService = ((MainActivity)getActivity()).getReaderService();
        newsInfoBeanList = new ArrayList<>();

        Bundle bundle = getArguments();
        cateTitle = bundle.getString("title");
        //Log.i("fragment","Bundle ______ content:" + cateTitle);

    }
    privoid void method1(){log.i("..",cateTitle);...}
    privoid void method2(){log.i("..",cateTitle);...}
}

这是我的代码简单版本。我有2个方法需要var cateTitle,但是它总是返回我的错误值(返回下一个片段值)。 如何解决呢?感谢帮助。 而且我很好奇,cateTitle是私有且非静态的,为什么我可以获取下一个片段的值?

这是我使用newInstance代码的方式:

mFragmentList.add(NewsCategoryFragment.newInstance("news"));

1 个答案:

答案 0 :(得分:0)

如果您在任何地方都犯了错误,我会喜欢这张支票

这是我的代码,用于通过new Fragment调用newInstance()

new DynamicFragment().newInstance("VALUE_AM_PASSING");

然后在DynamicFragment

中收集此值
 public static DynamicFragment newInstance(String val) {
    DynamicFragment fragment = new DynamicFragment();
    Bundle args = new Bundle();
    args.putString("someValue", val);
    fragment.setArguments(args);
    return fragment;
}

在此onCreateView()内部方法之后,将检索到这样的值

String tempString = getArguments().getString("someValue");

希望这个答案对您有帮助。