2012-08-06 2 views
1

이전에 대화 상자에서 데이터를 보내고 나왔습니다.하지만 문제가 무엇인지 잘 모르겠습니다.안드로이드가 onClick AlertDialog에서 참조를 잃었습니다.

mylocalDataRef의 값은 onClick 메서드가 호출 될 때 손실됩니다. AlertDialog의 입력은 String [] 만이므로 레벨의 이름 만 표시하는 것이 좋습니다. 사용자가 레벨을 클릭하면 mylocalDataRef.get (item)을 사용하여 전체 객체를 검색하고이를 활동으로 보냅니다.

디버깅 할 때 mylocalDataRef가 null이 아닙니다. 즉, get() 메서드를 호출 할 때 mylocalDataRef가 크래시되지 않지만 null 값처럼 해당 값을 볼 수 없으며 get()의 반환 결과는 항상 없는.

어떤 일이 일어나고 있는지 밝힐 수 있습니까?

p.s. showLevels()는 onOptionsItemSelected()에서 호출됩니다. 즉, 사용자가 작업 표시 줄에서 메뉴 버튼을 클릭합니다.

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 값이 null이 아니며 올바른 데이터를 포함하고 있습니다. 내가 문제를 의심 한 이유는 액티비티의 getExtras가 올바른 답을 얻지 못했기 때문입니다. 이것은 getIntExtra 대신에 getStringExtra를 사용하는 것으로 떨어졌습니다.

왜 디버거가 mylocalDataRef의 값이 나를 벗어나는 것을 볼 수 없으므로 null과 비슷하게 보입니다. 그래서 로그 콘솔에 출력하여 데이터가 있음을 증명했습니다.

관련 문제