2012-08-06 56 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的值超出了我,它使它看起来像空。所以我将它打印到日志控制台以证明数据在那里。