动态地向碎片添加信息

时间:2013-08-03 00:39:14

标签: android android-layout layout

我遇到的问题是我不知道如何获得指向片段内布局的指针。很明显,要在Java中获取布局指针,您可以执行以下操作:

 LinearLayout llTemp = (LinearLayout) findViewById(R.id.llTemp)

这些方面的东西。

现在我正在做的是从主类中的服务器获取信息并在同一个类中加载一个片段。我想用从外部类加载的信息填充片段。有没有办法做到这一点?我会从片段中抓取布局并按照这种方式进行,但我不能在片段中引用它。

我确定这是一个常见的问题,但我无法找到与此类似的任何内容。

提前致谢, 干杯, 杰克

回答评论:

 View view = inflater.inflate(R.layout.main_frag, container, false);
 mainLayout = (LinearLayout) view.findViewById(R.id.ll_MainFrag);
 return view;

这就是我的onCreateView。

好的,只是添加我实例化片段的方式:

 private int MAIN = 1;
 FragmentManager fm = getSupportFragmentManager();
 fragments[MAIN] = new MainFragment();

 FragmentTransaction transaction = fm.beginTransaction();
 transaction.commit();

 getSupportFragmentManager().beginTransaction().add(R.id.flMain, fragments[MAIN]).commit();

从这里,我希望能够做到这样的事情:

 fragments[MAIN].createTextView();

1 个答案:

答案 0 :(得分:1)

创建片段时,创建公共方法来设置数据:

public class MyFragment extends Fragment {
    private TextView text1;
    private TextView text2;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View layout = LayoutInflater.from(getActivity()).inflate(R.layout.simple_list_item_2,container,false);

        text1 = (TextView) layout.findViewById(R.id.text1);
        text2 = (TextView) layout.findViewById(R.id.text2);

        return super.onCreateView(inflater, container, savedInstanceState);
    }

    public void setData(String t1, String t2){
        text1.setText(t1);
        text2.setText(t2);
    }
}

在父活动中添加片段时,请为其指定一个唯一标记:

 MyFragment f = new MyFragment();
 getFragmentManager().beginTransaction().add(f,"my_fragment").commit();

稍后,您可以从父活动中搜索片段并在其上调用一些方法:

 MyFragment frg = (MyFragment) getFragmentManager().findFragmentByTag("my_fragment");
 if(frg != null){
    frg.setData("abc","def");
 }

此外,如果从布局添加片段,您可以通过id找到片段。