0

重複の可能性:
フラグメント android の findViewById

現在、Android プロジェクトに取り組んでおり、フラグメントを機能させようとしています。フラグメント部分は機能していますが、UI コンポーネントを制御しようとしています。標準的なアクティビティでは、次のようなものを使用できます

TextView txtMyTextBox = (TextView)findViewById(R.id.my_text_box)

ListFragment でクラスを拡張していますが、なぜ上記と同じコードを試すと、次のエラーが発生します

メソッド findViewById(int) は未定義です

なぜこれが機能しないのですか。ご協力いただきありがとうございます。

4

2 に答える 2

5

そのメソッドは、あなたがそれを呼び出していると私が想定しているFragmentクラスでは定義されていません。フラグメントが表示しているビューで使用する必要があります。これは、戻ってきたのと同じビューでonCreateView()あり、で取得できますgetView()。したがって、TextView txtMyTextBox = (TextView)getView().findViewById(R.id.my_text_box)動作するはずです。

于 2012-09-07T20:03:19.647 に答える
1

フラグメントを使用する場合は、onCreateViewメソッドをオーバーライドする必要があります。

ここに例があります:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {
        View v = inflater.inflate(R.layout.YOUR_FRAGMENT_LAYOUT, null);

        TextView txtMyTextBox = (TextView)v.findViewById(R.id.my_text_box)

        return v;
    }
于 2012-09-07T20:02:32.023 に答える