2012-08-06 73 views
1

我之前已經發送了數據進/出對話框,但這讓我難以理解問題所在。Android在onClick AlertDialog中失去了參考

當onClick方法被調用時,mylocalDataRef的值會丟失。這個想法是隻顯示一個級別的名稱,因爲AlertDialog的輸入只是String []。當用戶點擊某個級別時,我使用mylocalDataRef.get(item)來檢索完整對象並將其發送給活動。當調試時,mylocalDataRef不爲空,即它在調用get()方法時不會崩潰,但是我看不到它的值(就像它是null),並且get()的返回結果始終空值。

任何人都可以闡明發生了什麼。

p.s.在onOptionsItemSelected()中調用showLevels()時,即在用戶單擊操作欄上的菜單按鈕時調用showLevels()。

private void showLevels() 
    { 
     final ArrayList<Level> mylocalDataRef = levels; 
     String[] simpleLevels = new String[mylocalDataRef.size()]; 
     for(int i = 0; i < mylocalDataRef.size(); i++) 
     { 
      simpleLevels[i] = mylocalDataRef.get(i).getName(); 
     } 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Pick a level"); 
     builder.setItems(mylocalDataRef, new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int item) 
      { 
       Intent i = new Intent(getBaseContext(), LevelActivity.class); 
       i.setAction(Intent.ACTION_VIEW); 
       i.putExtra("result", mylocalDataRef .get(item).getId()); 
       i.putExtra("levelname", mylocalDataRef .get(item).getName()); 
       i.putExtra("type", "level"); 
       startActivity(i); 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

回答

0

半分辨率它。

onClick中mylocalDataRef的值不爲空,並且包含正確的數據。我懷疑問題的原因是活動中的getExtras沒有得到正確的答案。這是使用getStringExtra而不是getIntExtra。

爲什麼調試器,看不到mylocalDataRef的值超出了我,它使它看起來像空。所以我將它打印到日誌控制檯以證明數據在那裏。