1

以前にダイアログの内外にデータを送信したことがありますが、これにより問題が何であるかについて困惑しました。

onClickメソッドが呼び出されると、mylocalDataRefの値は失われます。AlertDialogの入力はString[]のみであるため、レベルの名前だけを表示するという考え方です。ユーザーがレベルをクリックすると、mylocalDataRef.get(item)を使用してオブジェクト全体を取得し、それをアクティビティに送信します。

デバッグ時、mylocalDataRefはnullではありません。つまり、get()メソッドを呼び出してもクラッシュしませんが、その値は(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の値はnullではなく、正しいデータが含まれています。問題が疑われた理由は、アクティビティのgetExtrasが正しい答えを取得していないためです。これは、getIntExtraの代わりにgetStringExtraを使用することになりました。

デバッガーがmylocalDataRefの値を認識できない理由は、私を超えているため、nullのように見えます。そこで、データがそこにあることを証明するために、ログコンソールに印刷しました。

于 2012-08-06T12:53:11.513 に答える