我的 FragmentActivity 循环并从相同的 xml 和活动创建 8 个片段。该片段有一个TextView
,通过将参数传递给片段,我想在每个TextView
片段中显示不同的文本。使用这种方法,我可以节省创建 139 个具有不同文本的相同片段。
问题TextView
,当 I 时,所有 8 个片段都发生了变化setText()
,因为它们都共享相同的模板(xml 和活动)。
解决方案- 请参阅下面的答案。
绝境
我的 FragmentActivity 循环并从相同的 xml 和活动创建 8 个片段。该片段有一个TextView
,通过将参数传递给片段,我想在每个TextView
片段中显示不同的文本。使用这种方法,我可以节省创建 139 个具有不同文本的相同片段。
问题TextView
,当 I 时,所有 8 个片段都发生了变化setText()
,因为它们都共享相同的模板(xml 和活动)。
解决方案- 请参阅下面的答案。
绝境
好的,所以当我尝试以上面尝试的方式复制片段时,我了解到我的代码中有问题。
我的解决方案
我创建了一个新的虚拟 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 创建一个新的虚拟项目,并根据该示例调整您的代码。
希望这有帮助。
绝境
这是因为当您复制 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 并设置文本之后。