以前にダイアログの内外にデータを送信したことがありますが、これにより問題が何であるかについて困惑しました。
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();
}