我之前已经发送了数据进/出对话框,但这让我难以理解问题所在。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();
}