0

こんにちは、Android マーケットの一部のアプリで現在エラーが発生しています。

これはスタックトレースです:

   java.lang.NullPointerException
    at ****.****.MainActivity.onListItemClick(MainActivity.java:110)
    at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
    at android.widget.ListView.performItemClick(ListView.java:3513)
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3683)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:870)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
    at dalvik.system.NativeStart.main(Native Method)

それがうまくいかないコード部分:

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        mMediaPlayer.stop();
        Sound s = (Sound) l.getItemAtPosition(position);
        mMediaPlayer = MediaPlayer.create(this, s.getSoundResourceId());
        mMediaPlayer.start();
    }

ほとんどの場合、動作しています (サウンドを再生しています) が、nullpointerexception が発生することがあります。

前もって感謝します

4

1 に答える 1

1

おそらくsはnullですか?再現/デバッグできますか?

リストアダプタ実装のgetItemAtPosition(position)のコードを提供していただけませんか。ラップする可能性があります

    if (s != null) {
      mMediaPlayer = MediaPlayer.create(this, s.getSoundResourceId());
      mMediaPlayer.start();
    }

編集。うーん、私は間違ったラインにいました。ドキュメントを読んだ場合、次の理由から、メディアプレーヤーの起動をnullチェックでラップする必要があります。

戻り値

a MediaPlayer object, or null if creation failed 

そして、作成が失敗する理由を見つけてください。

于 2012-12-15T00:30:49.050 に答える