0

4 つのタブを持つ FragmentPagerAdapter を実装し、それぞれにフラグメントを関連付けました。問題は、それらに含まれる要素とやり取りできないことです。次のことを試しました。

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

        View view = inflater.inflate(R.layout.fragment1, container, false);

        // Some codes for layout such as findViewById
        ImageView img = (ImageView)findViewById(R.id.image);
        img.setOnClickListener(new ImageView.OnClickListener() {
            public void onClick(View v) {
                Log.i("Fragment", "This is a test"); 
            }
        });

        return view;
    }

このメソッドは、「Fragment」から継承し、レイアウトの 1 つをロードするクラスにあり、これと同じタイプの 4 つのクラス (タブごとに 1 つ) があります。

メソッド「findViewById」で失敗するのですが、そこに出せない場合はどこに出したらいいですか?

どうもありがとうございました。

例を続けると、新しい問題が発生しました。ビューの 1 つは、次のように画像を含む GridView を読み込みます。

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

        View view = inflater.inflate(R.layout.init, container, false);

        final GridView grid = (GridView)view.findViewById(R.id.myGrid);            
        grid.setNumColumns(2);
        grid.setAdapter(new ImageAdapter(this));

        return view;
    }

問題は、メソッド 'new ImageAdapter(context)' がパラメーターとして変数タイプ Context を受け取り、メソッド 'newImageView (context)' にロードすることであり、このタイプの変数が必要であり、'this' を渡す変数は Fragment 型ですが、そうではないことです。コンテキスト、何が失敗したか、どうすれば修正できますか?

前もって感謝します。

4

1 に答える 1

0

膨張したビューからウィジェットにアクセスする場合は、そのビューのみに関してウィジェットを取得する必要があります

この行を変更

 ImageView img = (ImageView)findViewById(R.id.image);

これに

 ImageView img = (ImageView) view.findViewById(R.id.image);

結果についてコメントしてください

于 2013-09-30T07:53:29.833 に答える