我之前已经在对话框中输入/发送过​​数据,但是这让我很困惑。

调用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。因此,我将其打印到日志控制台以证明数据在那里。

10-08 01:45