2012-01-05 42 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

相關問題