安卓应用程序在“分享”意图后崩溃

4

我的应用提供了一个"分享/告诉朋友"的功能。当用户点击"分享"按钮时,将调用以下方法打开能够执行此操作的应用程序列表(例如Gmail、Twittroid、Facebook等):

public void share() {
    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getText(R.string.menu_share_subject));
    shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, getText(R.string.menu_share_body));

    startActivity(Intent.createChooser(shareIntent, getText(R.string.menu_share_intent)));      
}

分享功能基本上可以正常使用。但是当分享应用程序(Facebook、Twitter等)试图返回到我的应用程序时,会抛出强制关闭的异常。
我猜测在分享过程中,我的应用程序被关闭了。至少这是调试器所说的。
有什么想法吗?
问题似乎是应用程序在后台关闭了。当我从我的应用程序打开浏览器并尝试使用“返回”键返回到我的应用程序时,也会抛出强制关闭异常。以下是Log Cat输出。
04-13 22:28:42.003: ERROR/AndroidRuntime(18915): Uncaught handler: thread main exiting due to uncaught exception 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): java.lang.RuntimeException: Unable to start activity ComponentInfo{eu.xxx.xxx/eu.xxx.xxx.xxx}: java.lang.NullPointerException 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.ActivityThread.access$2100(ActivityThread.java:116) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.os.Handler.dispatchMessage(Handler.java:99) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.os.Looper.loop(Looper.java:123) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.ActivityThread.main(ActivityThread.java:4203) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at java.lang.reflect.Method.invokeNative(Native Method) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at java.lang.reflect.Method.invoke(Method.java:521) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at dalvik.system.NativeStart.main(Native Method) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): Caused by: java.lang.NullPointerException 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at eu.xxx.xxx.xxx.fillData(xxx.java:178) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at eu.xxx.xxx.xxx.access$1(xxx.java:173) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at eu.xxx.xxx.xxx$1.onTextChanged(xxx.java:139) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.widget.TextView.sendOnTextChanged(TextView.java:6096) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.widget.TextView.setText(TextView.java:2677) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.widget.TextView.setText(TextView.java:2542) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.widget.EditText.setText(EditText.java:71) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.widget.TextView.setText(TextView.java:2517) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.widget.TextView.onRestoreInstanceState(TextView.java:2417) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.view.View.dispatchRestoreInstanceState(View.java:5689) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1125) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1125) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1125) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.view.View.restoreHierarchyState(View.java:5668) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1506) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.Activity.onRestoreInstanceState(Activity.java:833) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.ListActivity.onRestoreInstanceState(ListActivity.java:221) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.Activity.performRestoreInstanceState(Activity.java:805) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1172) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2378) 04-13 22:28:42.253: ERROR/AndroidRuntime(18915): ... 11 more

2
发布相关的调试输出 - jqpubliq
1
通过jqpublic所说的“强制关闭”对话框关联的Java堆栈跟踪,您可以通过adb logcat、DDMS或Eclipse中的DDMS透视图获取此堆栈跟踪。 - CommonsWare
2个回答

4
04-13 22:28:42.253: ERROR/AndroidRuntime(18915): Caused by: java.lang.NullPointerException
04-13 22:28:42.253: ERROR/AndroidRuntime(18915): at xx.xxx.xxx.xxx.fillData(xxx.java:178)

您遇到了一个NullPointerException。修复它,幸运的话,您的问题就会消失。


有没有一种通用的方法来修复这个问题? - j7nn7k
2
不要尝试在变量或数据成员为“null”的情况下调用方法。如果您是Java的新手,我真的建议花些时间在Android之外熟悉这门语言。Android有足够奇怪的地方,同时学习Java和Android可能会令人困惑。 - CommonsWare
这是与生命周期管理有关的问题。该变量存在于内部应用程序生命周期中,但从另一个应用程序返回时不存在。您的提示和Android开发人员资源帮助我解决了问题,因此感谢两位 ;)有用的文章: http://developer.android.com/guide/tutorials/notepad/notepad-ex3.htmlhttp://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle - j7nn7k

0
public void share() {
   Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
   shareIntent.setType("text/plain");
   shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, new String(getText(R.string.menu_share_subject)));
   shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, new String(getText(R.string.menu_share_body)));

   startActivity(Intent.createChooser(shareIntent, getText(R.string.menu_share_intent)));      
  }

完成任务啦 :) 不知道为什么其他地方它都能正常工作,但是加上这个补充后,它按预期工作了:) 也感谢您的回复


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接