0

我的 FragmentActivity 循环并从相同的 xml 和活动创建 8 个片段。该片段有一个TextView,通过将参数传递给片段,我想在每个TextView片段中显示不同的文本。使用这种方法,我可以节省创建 139 个具有不同文本的相同片段。

问题TextView,当 I 时,所有 8 个片段都发生了变化setText(),因为它们都共享相同的模板(xml 和活动)。

解决方案- 请参阅下面的答案。

绝境

4

2 回答 2

0

好的,所以当我尝试以上面尝试的方式复制片段时,我了解到我的代码中有问题。

我的解决方案

我创建了一个新的虚拟 Android 项目,并将 Navigation 类型选择为Scrollable Tabs + Swipe

然后我了解到它有 1 个活动:

main.java - 扩展:

FragmentActivity

并且,2个布局:

main.xml - 其中包含:

<android.support.v4.view.ViewPager>, 和

<android.support.v4.view.PagerTitleStrip>

Fragment.xml - 其中包含:

TextView

通过调整适配器,我能够创建基于相同布局 (xml) 的独特片段。

所以最终 - 使用 Scrollable Tabs + Swipe 创建一个新的虚拟项目,并根据该示例调整您的代码。

希望这有帮助。

绝境

于 2013-06-11T13:56:06.927 回答
0

这是因为当您复制 Fragment 时,您为创建的每个 Fragment 引用相同的视图。您必须更改片段的 id。如果你不这样做,你就会一直调用同一个片段。

最终答案: onCreateView 方法

private static int id = 0;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle      savedInstanceState) {
    LinearLayout mLinearLayout = new LinearLayout(this);
    TextView mTextView = new TextView(this);
    mTexTView.setId(Id); 
    id++;
    mLinearLayout.addView(mTextView);

    return mLinearLayout;
}

在您可以使用您的 textview 的 id 并设置文本之后。

于 2013-06-10T21:19:47.140 回答