2012-01-05 20 views
0

Androidアプリに問題があります。おそらく単純なJavaの問題ですが、私はJavaをよく知っていて、Googleに何を知っているのか分かりません。以下は私の問題を説明しているものの簡略版です。私はダイアログからgridviewにアクセスしたいと思っています。明らかに私がここにいるのは正しいことではない。私はonCreateメソッドの外で宣言を移動しようとしましたが、起動時にアプリケーションがクラッシュしました(エラーメッセージは表示されません)。私もShowDialogの引数として追加しようとしましたが、うまくいきませんでした。あなたが言うことができるように、私は何をしているのか分からない。思考?ダイアログ(Android)からGridViewインスタンスにアクセスするにはどうすればよいですか?

public class HelloGridView extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new ImageAdapter(this)); 
     ((ImageAdapter) gridview.getAdapter()).initializemThumbIds(); 

     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       showDialog(0); 
      } 
     }); 
    } 

    protected Dialog onCreateDialog(int id) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("?") 
       .setCancelable(false) 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         gridview.setAdapter(new ImageAdapter(this)); // gridview cannot be resolved 
         dialog.cancel(); 
        } 
       }) 
       .setNegativeButton("No", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         HelloGridView.this.finish(); 
        } 
       }); 
     AlertDialog diag = builder.create(); 
     return diag; 
    } 
} 

答えて

1

私は、GridViewのメンバ変数作っ以下のようあなただけの、正しいスコープを持っていないと思います。しかし、あなたが本当にやりたいことは、あなたのImageAdapterをメンバ変数にし、あなたのダイアログの "yes"クリックだけImageAdapterを更新することだと思います。

public class HelloGridView extends Activity { 
private GridView gridview; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    gridview = (GridView) findViewById(R.id.gridview); 
    gridview.setAdapter(new ImageAdapter(this)); 
    ((ImageAdapter) gridview.getAdapter()).initializemThumbIds(); 

    gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      showDialog(0); 
     } 
    }); 
} 

protected Dialog onCreateDialog(int id) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("?") 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        gridview.setAdapter(new ImageAdapter(this)); // gridview cannot be resolved 
        dialog.cancel(); 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        HelloGridView.this.finish(); 
       } 
      }); 
    AlertDialog diag = builder.create(); 
    return diag; 
} 
} 
+0

ありがとうございます!そうです、私はImageAdapterをメンバ変数にしたいと思っていました。 – BenH

関連する問題