【问题标题】:How do I duplicate fragments?如何复制片段?
【发布时间】:2013-06-10 20:13:53
【问题描述】:

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

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

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

绝境

【问题讨论】:

    标签: android xml android-activity duplicates fragment


    【解决方案1】:

    这是因为当您复制 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并设置文本之后。

    【讨论】:

    • 请参阅上面的编辑 2 :)
    • 你能修改我的代码并发布吗?我膨胀什么?我对此很陌生。对不起:)
    • 谢谢,最后一个问题:我在 onCreateView 里面做什么?我要返回什么?
    • 在 onCreateView 中创建视图 :)。你可以在这里找到参考:developer.android.com/reference/android/app/…, android.view.ViewGroup, android.os.Bundle)
    • 当我添加 setContentView 时,我收到错误 this method is undefined for Fragment. Create method?
    【解决方案2】:

    好的,所以当我尝试以上述方式复制片段时,我发现我的代码有问题。

    我的解决方案

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

    然后我得知它有 1 个活动:

    main.java - 扩展:

    FragmentActivity

    还有 2 个布局:

    ma​​in.xml - 其中包含:

    <android.support.v4.view.ViewPager>

    <android.support.v4.view.PagerTitleStrip>

    Fragment.xml - 其中包含:

    TextView

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

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

    希望对您有所帮助。

    绝境

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多