1

我之前已经在对话框中发送数据/发送数据,但这让我对问题所在感到困惑。

当调用 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();
    }
4

1 回答 1

0

半解决它。

onClick 中 mylocalDataRef 的值不为空,并且包含正确的数据。我怀疑有问题的原因是活动中的 getExtras 没有得到正确的答案。这归结为使用 getStringExtra 而不是 getIntExtra。

为什么调试器看不到 mylocalDataRef 的值超出了我的范围,它使它看起来像 null。所以我将它打印到日志控制台以证明数据在那里。

于 2012-08-06T12:53:11.513 回答