我有一个TextViewerFragment来显示文本文件内容。它有一个newInstance
方法:
public static TextViewerFragment newInstance() {
return new TextViewerFragment();
}
并使用getFragmentManager().beginTransaction().replace(R.id.fl_menu, tvFragment).commit();
来显示它。
同时我需要传递tvFragment
文件路径来告诉它要显示哪个文件。我知道如何在Bundle
时通过new
传递参数。但重用这个tvFragment呢?如何在replace
旧tvFragment
实例时传递参数?
答案 0 :(得分:0)
你不能。
由于getArguments()的文档建议它返回创建时传递的参数的Bundle,因此在片段激活后无法更改。
如果要重用片段,则只需公开一个方法来设置变量中的路径。您不必坚持使用参数,只需创建自己的扩展片段的自定义类。
作为旁注。这个newinstance方法没有任何意义,因为你每次都只是创建一个新的片段。
您可以声明
private TextViewerFragment mInstance;
public TextViewerFragment getInstance(){
if (mInstance == null) {
mInstance = new TextViewerFragment();
}
return mInstance;
}
然后创建一个公共方法来设置路径。