2012-01-05 44 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 2012-01-05 03:31:09

相关问题