我之前已经在对话框中输入/发送过数据,但是这让我很困惑。
调用onClick方法时,mylocalDataRef的值会丢失。想法是仅显示级别的名称,因为AlertDialog的输入仅是String []。当用户单击某个级别时,我使用mylocalDataRef.get(item)检索完整对象并将其发送给活动。
调试时,mylocalDataRef不为null,即在调用get()方法时不会崩溃,但是我看不到它的值(好像它为null),并且get()的返回结果始终为null。
任何人都可以阐明正在发生的事情。
ps。在onOptionsItemSelected()中调用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();
}
最佳答案
半解决它。
onClick中的mylocalDataRef的值不为null,并且包含正确的数据。我怀疑存在问题的原因是活动中的getExtras没有得到正确的答案。这归因于使用getStringExtra而不是getIntExtra。
为什么调试器看不到mylocalDataRef的值超出了我,它使它看起来像null。因此,我将其打印到日志控制台以证明数据在那里。