0

新しいアクティビティを開始してバンドルを提供するリストクリックメソッドです

protected void onListItemClick(ListView l , View v, int position, long id){
  super.onListItemClick(l, v, position, id);


  Intent lis = new Intent(this, MusicService.class);
  stopService(lis);  

  Object o = this.getListAdapter().getItem(position);
  String songpen = o.toString();
  String artwork = albumartwork.get(songtitle.indexOf(songpen));
  String artistpen = artistname.get(songtitle.indexOf(songpen)); 
  String albumpen = albumname.get(songtitle.indexOf(songpen));
  String pathpen = path.get(songtitle.indexOf(songpen));

  int songpos = songtitle.indexOf(o);

    Intent i  = new Intent(IplayerActivity.this, SongPlaying.class);
    i.putExtra("songnamekeyword", songpen);
    i.putExtra("artistkeyword", artistpen);
    i.putExtra("albumkeyword", albumpen);
    i.putExtra("pathkeyword", pathpen);
    i.putExtra("artworkkeyword", artwork);

    i.putExtra("position", songpos);

    i.putExtra("nextsong", songtitle);
    i.putExtra("nextartist", artistname);
    i.putExtra("nextalbum", albumname);
    i.putExtra("nextpath", path);
    i.putExtra("nextartwork", albumartwork);

    startActivity(i);

}

すでに持っていたものとまったく同じ情報で Songplaying クラスを開始する Now Playing バンドルを作成したい...基本的には、何も変更せずにそのままクラスを再開したい。しかし、私がこれを行うとき

             Intent k = new Intent(this, SongPlaying.class);        
            startActivity(k);

エラーが発生します。以前に持っていた情報で SongPlaying クラスをリロードしたいだけです。

11-28 15:46:50.943: ERROR/AndroidRuntime(817): FATAL EXCEPTION: main
11-28 15:46:50.943: ERROR/AndroidRuntime(817): java.lang.RuntimeException: Unable to create service unjustentertainment.com.MusicService: java.lang.NullPointerException
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2969)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at android.app.ActivityThread.access$3300(ActivityThread.java:125)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2087)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at android.os.Looper.loop(Looper.java:123)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at android.app.ActivityThread.main(ActivityThread.java:4627)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at java.lang.reflect.Method.invokeNative(Native Method)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at java.lang.reflect.Method.invoke(Method.java:521)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at dalvik.system.NativeStart.main(Native Method)
11-28 15:46:50.943: ERROR/AndroidRuntime(817): Caused by: java.lang.NullPointerException
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at unjustentertainment.com.MusicService.onCreate(MusicService.java:36)
11-28 15:46:50.943: ERROR/AndroidRuntime(817):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2959)

音楽サービス クラスには、メディア プレーヤーを再生するためのパスが必要です。しかし、この新しい意図では、SongPlaying クラスを [Now Playing] ボタンをクリックする前とまったく同じように表示したいだけなので、余分なものは追加しません。

4

1 に答える 1

0

おそらく、IplayerActivity.this の onCreate メソッド内でバンドルが hasExtra を持っているかどうかを確認していません。

それ以外の場合は、NPE がどこから来たのかを判断するのが難しいため、より多くの情報を含める必要があります。

于 2011-11-28T21:51:29.297 に答える