0

ActionBarSherlockとSherlockDialogFragmentを使用しています。私のプロジェクトには少し問題があります。sherlockdialogfragmentで他のレイアウトを表示したいのですが、すべてうまくいきます。私の問題は、imageadapterを使用する場合、imageadapterで「this」を使用する必要があることを知っている限りです。静的な「これ」は使用できませんが、どうすればよいですか?sherlockdialogfragmentでレイアウトを表示する方法がわかりません。これが私の問題です。

 ((GridView) gridView).setAdapter(new ImageAdapter(this, MOBILE_OS));

これが私の完全なコードです

  public static class MyDialogFragment extends SherlockDialogFragment {
        int mNum;
        static MyDialogFragment newInstance(int num) {
            MyDialogFragment f = new MyDialogFragment();
            Bundle args = new Bundle();
            args.putInt("num", num);
            f.setArguments(args);
            return f;
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mNum = getArguments().getInt("num");
            int style = DialogFragment.STYLE_NORMAL, theme = 0;
                style = DialogFragment.STYLE_NO_FRAME;
                theme = android.R.style.Theme;

            setStyle(style, theme);

        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
                    final String[] MOBILE_OS = new String[] { "Android", "iOS",
                    "Windows", "Blackberry" };

            View v = inflater.inflate(R.layout.pen_content, container, false);
    View gridView = v.findViewById(R.id.gridView1);
    ((GridView) gridView).setAdapter(new ImageAdapter(this, MOBILE_OS));
            return v;
        }

    }

mycodeを修正するにはどうすればよいですか...ありがとう...

編集....私の問題は解決しました..しかし、もう1つ質問します....グリッドビューイベントクリックから値を取得したい場合は、どうすればよいですか?? setOnClickListenerを追加しましたが、エラーが発生します...

     @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
                    final String[] MOBILE_OS = new String[] { "Android", "iOS",
                    "Windows", "Blackberry" };

               View v = inflater.inflate(R.layout.pen_content, container, false);
           View gridView = v.findViewById(R.id.gridView1);
           ((GridView) gridView).setAdapter(new ImageAdapter(getSherlockActivity(), MOBILE_OS));
            gridView.setOnClickListener(new OnItemClickListener() {
                 public void onItemClick(AdapterView<?> parent, View v,
                 int position, long id) {
                     Toast.makeText(getSherlockActivity(),((TextView)v.findViewById(R.id.grid_item_label)).getText(), Toast.LENGTH_SHORT).show();
                    }
                   });
                    return v;
            }
4

1 に答える 1

1

変化する

((GridView) gridView).setAdapter(new ImageAdapter(this, MOBILE_OS));

だからそれは

((GridView) gridView).setAdapter(new ImageAdapter(getSherlockActivity(),MOBILE_OS));

型の不一致があるようですが、SherlockFragment拡張されませんContext。これは、ImageAdapterがおそらく必要とします。

編集した質問に答えるには

((GridView)gridView).setOnItemClickListener(new OnItemClickListener() {
                 public void onItemClick(AdapterView<?> parent, View v,
                 int position, long id) {
                     Toast.makeText(getSherlockActivity(),((TextView)v.findViewById(R.id.grid_item_label)).getText(), Toast.LENGTH_SHORT).show();
                    }
                   });

リスナーを設定するときは、GridViewクラスを使用する必要があります。次のように最初からキャストする必要があります。

GridView gridView = (GridView) v.findViewById(R.id.gridView1);
于 2013-01-14T00:30:35.990 に答える