Java 当调用新意图上的startActivity时,DialogFragment正在重新启动自身

Java 当调用新意图上的startActivity时,DialogFragment正在重新启动自身,java,android,tablet,Java,Android,Tablet,在我的Android应用程序中,我有一个包含ListView的对话框片段。列表视图中项目的onclick处理程序调用MyInternalPlayer方法,该方法调用VideoView活动来播放视频。VideoView活动在应用程序中的其他位置使用,因此我知道它正在工作 private void internalPlayer(final String channelUrl) { final Intent localIntent = new Intent(getActivity(), Int

在我的Android应用程序中,我有一个包含ListView的对话框片段。列表视图中项目的onclick处理程序调用MyInternalPlayer方法,该方法调用VideoView活动来播放视频。VideoView活动在应用程序中的其他位置使用,因此我知道它正在工作

private void internalPlayer(final String channelUrl)
{
    final Intent localIntent = new Intent(getActivity(), InternalVideoActivity.class);
    localIntent.putExtra(EXTRA_VIDEO_URI, Uri.encode(channelUrl, ALLOWED_URI_CHARS).toString());
    localIntent.putExtra(GridViewFragment.CHANNEL_NAME, mCategory.toString() + " Episode ");
    getActivity().startActivity(localIntent);
}
在平板电脑中运行应用程序时,一切正常,视频活动开始并播放视频。当我在电话设备上运行应用程序时,当我单击ListView中的某个项目时,对话框片段会重新启动,因为最初传递给它的序列化对象不再存在,所以会抛出NullPointerException

这是日志:

04-16 19:34:33.790    6000-6000/com.xystra W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41998700)
04-16 19:34:33.790    6000-6000/com.xystra E/MAIN PHONE ACTIVITY: 1﹕ Unable to start activity ComponentInfo{com.xystra/com.xystra.activity.CatchUpSynopsisActivity}: java.lang.NullPointerException
04-16 19:34:33.814    6000-6000/com.xystra E/MAIN PHONE ACTIVITY﹕ STACK TRACE
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xystra/com.xystra.activity.CatchUpSynopsisActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3740)
            at android.app.ActivityThread.access$700(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.xystra.ui.fragment.ProgramFragment.onCreateView(ProgramFragment.java:369)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
            at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1917)
            at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:544)
            at roboguice.activity.RoboFragmentActivity.onStart(RoboFragmentActivity.java:60)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
            at android.app.Activity.performStart(Activity.java:5143)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3740)
            at android.app.ActivityThread.access$700(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
非常感谢您的任何帮助或想法

更多信息
  • 对话框片段正确加载。listview已填充,一切正常
  • 当我在listview中单击一个项目时,我的internalPlayer方法被调用。当执行getActivity().startActivity(Localitent)时,对话框片段会重新启动自身,而不是启动新的意图/活动
  • 由于片段正在重新启动自身,第一次传递的序列化对象不可用或为空,因此对话框片段返回您在上面看到的异常
  • 在平板电脑上,一切都能完美运行。只有在电话设备上我才能获得此事件

我去掉了对话框片段,并将现有的活动片段用于我的视图,运行了一些测试,并且能够推断出由于某种原因导致问题的基础活动中存在算术异常。我真的不知道该方法是如何被调用而导致异常的。感谢您对那些发表评论的人的帮助。

您能给我们展示一下这个方法吗:
com.xystra.ui.fragment.ProgramFragment.onCreateView(ProgramFragment.java:369)
我在VideoView活动构造函数和OnCreate方法中添加了断点,看看它是否达到了那个程度。不幸的是,它甚至从未实例化添加到description
369-mTextViewSynopsisEventTitle.setText(mProgramEvent.getProgramTitle())中的Activity.onCreateView方法它为空,因为片段正在重新启动自身。
mProgramEvent
可能为空,然后。。。我不知道到底是什么。您可以只进行空检查,或者将值存储为字符串,或者只将值存储到SharedReferences中。最后一个选择可能是最好的。