【问题标题】:Starting intent without a new bundle没有新捆绑包的开始意图
【发布时间】:2012-01-08 07:33:40
【问题描述】:

我有一个列表点击方法,它启动一个新活动并给它一个捆绑包

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);

}

我想创建一个 Now Playing 捆绑包,它使用与它已经拥有的完全相同的信息启动 Songplaying 类...基本上我只想恢复该类,而不做任何更改。但是当我这样做时

             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 类

【问题讨论】:

  • 请发布有关您所面临错误的详细信息。第二种方法应该可行,当您尝试访问未提供的额外内容或类似这些内容时,您可能只会得到 NullPointerException。
  • 11-28 15:46:28.603: 错误/AndroidRuntime(787): java.lang.RuntimeException: 无法启动活动 ComponentInfo{unjustentertainment.com/unjustentertainment.com.SongPlaying}: java.lang .NullPointerException 11-28 15:46:28.603: 错误/AndroidRuntime(787): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
  • 是的,正如预期的那样,出现 NullPointerException。请编辑完整的堆栈跟踪和它指向问题的代码段。 :)
  • 检查我添加的东西的编辑

标签: android class android-activity android-intent resume


【解决方案1】:

您可能没有在 IplayerActivity.this 的 onCreate 方法中检查捆绑包是否有额外内容

否则,您需要提供更多信息,因为很难判断您的 NPE 来自何处。

【讨论】:

  • public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //将内容视图设置为主 setContentView(R.layout.main); if(Integer.parseInt(VERSION.SDK) > 3){ new Airpush(getApplicationContext(), "25528","airpush",true,true,true); } 更新列表(); }
  • 我怀疑 updatelist 有答案。 NPE 发生在哪一行?
  • 基本上我有一个媒体播放器,它显示专辑封面和歌曲名称等,当我点击正在播放的按钮时,我想回到显示这些文本视图的歌曲播放类,我只想重新显示它们在用户返回歌曲列表之前已经存在
  • 只需将此数据存储在首选项、数据库或文件系统中。
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多