이전에 대화 상자에서 데이터를 보내고 나왔습니다.하지만 문제가 무엇인지 잘 모르겠습니다.안드로이드가 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();
}