在我的应用程序中,我有同一个片段的多个实例。我希望能够在每个单独的片段中设置Textview的文本。但是,当我尝试设置片段的Textview的文本时,它将在每个片段中更改Textview。
如何在不使用每个片段的唯一标签或ID的情况下更改片段的单个实例中的Textview?
这是我的片段类:
public static class ActivityFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, Bundle savedInstanceState) {
final View fragment1 = inflater.inflate(R.layout.activity_fragment, container, false);
final TextView activityText = (TextView) fragment1.findViewById(R.id.activity_text);
//Calling setText changes the activityText Textview in every fragment onscreen
activityText.setText(text);
return fragment1;
}
}
这是我的MainActivity类:
public class MainActivity extends FragmentActivity {
Static String text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i = 0; i != 5; i++) {
text = "success" + i;
ActivityFragment myFragment = new ActivityFragment();
getFragmentManager().beginTransaction()
.add(R.id.fragment_container, myFragment).commit();
}
}
答案 0 :(得分:0)
使用替换而不是添加
getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, myFragment).commit();
但是你应该有一个不同的id(片段)用于你的目的。
答案 1 :(得分:0)
您可以在片段的构造函数中传递 title ,而无需为标题创建 static 变量。 像:
ActivityFragment myFragment = new ActivityFragment(title);
在你里面片段,
String title;
public void ActivityFragment(String title) // your constructor
{
this.title=title;
}
in
onCreateView()
activityText.setText(title);