2

3つのタブでメインレイアウトを設定する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!");

データを膨らませたレイアウトに設定するにはどうすればよいですか?

4

1 に答える 1

4

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;
}
于 2012-11-26T08:36:22.330 に答える