gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
final Dialog imageDialog = new Dialog(GridViewActivity.this);
imageDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
imageDialog.setContentView(getLayoutInflater().inflate(R.layout.image_layout, null));
final Button closeButton =(Button)findViewById(R.id.close_botton);
上のコードだとインスタンスできません。
java.lang.NullPointerException
こいつ出てきます。
Viewが一致していない。
Activityで定義されているfindViewByIdは簡単にいうとonCreateとかでsetContentViewしたViewの中からIDが一致するViewを取得する。
ViewクラスやDialogクラスにもfindViewByIdメソッドは定義されています。それぞれinflateしたViewの中からIDと一致するViewを取得します。
なので
final Button closeButton =(Button)findViewById(R.id.close_botton);
これだとActivityにセットしたViewから探そうとしてしまうので当然見つからず、nullになっていたらしいです。
なので
final Button closeButton = (Button) imageDialog.findViewById(R.id.close_botton);
にするとOK!
これでimageDialog