如何在恢复时将参数传递给Fragment?

时间:2014-08-13 12:39:48

标签: android

我有一个TextViewerFragment来显示文本文件内容。它有一个newInstance方法:

public static TextViewerFragment newInstance() {
    return new TextViewerFragment();
}

并使用getFragmentManager().beginTransaction().replace(R.id.fl_menu, tvFragment).commit();来显示它。

同时我需要传递tvFragment文件路径来告诉它要显示哪个文件。我知道如何在Bundle时通过new传递参数。但重用这个tvFragment呢?如何在replacetvFragment实例时传递参数?

1 个答案:

答案 0 :(得分:0)

你不能。

由于getArguments()的文档建议它返回创建时传递的参数的Bundle,因此在片段激活后无法更改。

如果要重用片段,则只需公开一个方法来设置变量中的路径。您不必坚持使用参数,只需创建自己的扩展片段的自定义类。

作为旁注。这个newinstance方法没有任何意义,因为你每次都只是创建一个新的片段。

您可以声明

private TextViewerFragment mInstance;

public TextViewerFragment getInstance(){
   if (mInstance == null) {
        mInstance = new TextViewerFragment();
   }
return mInstance;
}

然后创建一个公共方法来设置路径。