如何将数据设置为片段膨胀的布局

时间:2012-11-26 08:31:07

标签: android android-layout android-fragments android-tabhost android-inflate

我有一个FragmentActivity,用3个标签设置主要布局。每个标签都有自己的片段,它将自己的布局膨胀为主布局。

例如,三个碎片中的一个:

public class Fragment1 extends Fragment {

  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    if (container == null) {
            return null;
        }
    return inflater.inflate(R.layout.fragment1, container, false);
  }
}

当我添加所有片段并将它们与标签连接时,一切正常。当我点击tab1时,Fragment1的布局显示,当我点击Tab2时,Fragment2的布局显示。

问题在于,当我想在那个膨胀的布局中更改某些内容时(例如,在fragment1布局中将setText执行到textView),我在该行中收到NullPointerException并且应用程序停止。

这不起作用:

 TextView test = (TextView) findViewById(R.id.fragmentOneText1);
 test.setText("Test text!");

如何将数据设置为膨胀布局?

1 个答案:

答案 0 :(得分:3)

您必须先使用LayoutInflater对片段特定的布局进行充气,然后在片段中映射控件

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View fragmentView = inflater.inflate(R.layout.R.layout.fragment1, container, false);
        TextView text = (TextView) fragmentView.findViewById(R.id.fragmentOneText1);
        mTextNoResult=(TextView)fragmentView.findViewById(R.id.text_noresult);
        return fragmentView;
}