我之前曾将数据传入/传出对话框,但这让我很难理解问题所在。
调用 onClick 方法时,mylocalDataRef 的值会丢失。这个想法是只显示级别的名称,因为 AlertDialog 的输入仅为 String[]。当用户单击某个级别时,我使用 mylocalDataRef.get(item) 来检索完整对象并将其发送到 Activity 。
调试时,mylocalDataRef不为null,即调用get()方法时不会崩溃,但看不到它的值(就好像它是null一样),并且get()的返回结果始终为null .
任何人都可以阐明正在发生的事情吗?
附: 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();
}
最佳答案
半解决它。
onClick 中 mylocalDataRef 的值不为 null,并且确实包含正确的数据。我怀疑有问题的原因是 Activity 中的 getExtras 没有得到正确的答案。这归因于使用 getStringExtra 而不是 getIntExtra。
为什么调试器看不到 mylocalDataRef 的值超出了我的范围,它使它看起来像 null。所以我将其打印到日志控制台以证明数据在那里。
关于java - Android 在 onClick AlertDialog 中丢失引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11826776/