0

在我的应用程序中,我有同一个片段的多个实例。我希望能够在每个单独的片段中设置 Textview 的文本。但是,当我尝试 setText 片段的 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();
    }
}    
4

2 回答 2

0

您可以在片段的构造函数中传递标题,而无需为标题创建静态变量。喜欢:

ActivityFragment myFragment = new ActivityFragment(title);

在你的内心碎片,

String title;

public void ActivityFragment(String title) // your constructor
{
      this.title=title;
}

onCreateView()

activityText.setText(title);
于 2017-10-30T12:38:19.637 回答
0

使用替换而不是添加

  getFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, myFragment).commit();

但是你应该有一个不同的 id(fragments) 来满足你的目的。

于 2017-10-30T12:33:56.273 回答