我之前已经在对话框中发送数据/发送数据,但这让我对问题所在感到困惑。
当调用 onClick 方法时,mylocalDataRef 的值会丢失。想法是只显示关卡的名称,因为 AlertDialog 的输入仅为 String[]。当用户单击一个级别时,我使用 mylocalDataRef.get(item) 来检索完整对象并将其发送到活动。
调试时mylocalDataRef不为null,即调用get()方法时没有crash,但是看不到它的值(好像是null一样),get()的返回结果始终为null。
任何人都可以阐明正在发生的事情。
ps 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();
}