应用程序重新启动时强制关闭

时间:2014-10-21 16:23:31

标签: java android android-fragments

我真的不知道如何开始这个,但我已经搜索了整个Google和stackoverflow。

我有这个收音机应用程序播放收音机(duh)并显示有关当前播放的歌曲的信息。但我在这里有一个问题:

我有一个Activity(MainActivity)和3个片段(playerFragment,其余的并不重要),片段是标签。

我在MainActivity上解析JSON数据并将其显示在playerFragment上。我能够直接显示它,没有问题。但当我按下按钮并再次打开应用程序时,它会立即崩溃。当然,我有一个只播放音频的服务,我确保应用程序在用户返回应用程序时加载数据(在这种情况下,Activity和片段在服务仍在运行时被销毁)。我检查了日志,它在开始setText onCreate时指出了NullPointerException。我使用完全相同的代码来加载数据(在销毁Activity和Fragment之前)。

我不知道我将如何在此处发布代码,因为我不知道哪里出错并且代码很长,请告诉我您希望看到的代码部分是什么&#39错了。

开始出错的代码:

TextView titleTextView = (TextView) findViewById(R.id.titleTextView);
TextView artistTextView = (TextView) findViewById(R.id.artistTextView);
TextView lyricsTextView = (TextView) findViewById(R.id.lyricsTextView);
ImageView albumImageView = (ImageView) findViewById(R.id.albumImageView);

JSONObject jsonObject = new JSONObject(jsonData);
String title = jsonObject.getString("title");
String artist = jsonObject.getString("artist");
String lyrics = jsonObject.getString("lyrics");
String albumURL = jsonObject.getString("coverUrl");
STARTING HERE: ---> titleTextView.setText(title);
artistTextView.setText("\n" + artist);
lyricsTextView.setText("\n" + lyrics);

当我第一次打开应用程序并解析它时,此代码能够显示数据,当我返回/启动应用程序时(服务正在运行时)应用程序关闭。

logcat:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.brandon.sgpradio/com.brandon.sgpradio.MainActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2395)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2453)
        at android.app.ActivityThread.access$900(ActivityThread.java:173)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5579)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NullPointerException
        at com.brandon.sgpradio.MainActivity.parseJson(MainActivity.java:225)
        at com.brandon.sgpradio.MainActivity.isMyServiceRunning(MainActivity.java:282)
        at com.brandon.sgpradio.MainActivity.onCreate(MainActivity.java:97)
        at android.app.Activity.performCreate(Activity.java:5451)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2359)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2453)
        at android.app.ActivityThread.access$900(ActivityThread.java:173)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5579)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
        at dalvik.system.NativeStart.main(Native Method)

谢谢!

1 个答案:

答案 0 :(得分:0)

更新: 1.通过ViewPager将标记添加到活动时,为标记添加标记。

  

fragment = new playerFragment();
  fragment.setTag( “player_fragment”);

  1. 通过getFragmentManger()。findFragmentByTag()方法获取片段。
  2.   

    PlayerFragment pFragment =   。getFragmentManager()findFragmentByTag( “player_fragment”);   if(pFragment!= null)   {
         pFragment.setTextViewText();
      }