2010-04-13 115 views
3

我的应用程序提供了一个“分享/告诉朋友”函数。当按下“共享”按钮被调用时,打开应用程序列表下面的方法,它可以执行操作(如Gmail中,Twittroid,Facebook的...。):“共享”意图后的Android应用程序崩溃

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,...)试图返回到我的应用程序时,就会抛出强制关闭。

我想我的应用在共享过程中在后台关闭。至少这是调试器说的。

任何想法?


问题似乎是应用程序在后台关闭。另外,当我从我的应用程序打开浏览器时,尝试使用后退键返回到我的应用程序。关闭力量被抛出。这是日志猫输出

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 2010-04-13 19:53:30

+1

...其中jqpublic表示与您的“强制关闭”对话框关联的Java堆栈跟踪。您可以通过'adb logcat',DDMS或Eclipse中的DDMS透视图获取此堆栈跟踪。 – CommonsWare 2010-04-13 20:06:33

回答

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。修复这个问题,幸运的是,你的问题将会消失。

+0

有没有一种通用的方法来解决这个问题? – j7nn7k 2010-04-13 22:03:35

+2

是的 - 不要尝试调用变量或数据成员为null的方法。如果你是Java新手,我真的建议花一些时间去熟悉Android以外的语言。 Android非常奇怪,试图同时学习Java和Android可能会让人困惑。 – CommonsWare 2010-04-13 22:34:02

+0

这是生命周期管理的问题。该变量存在于内部应用程序生命周期中,但不是从其他应用程序返回时。 你的提示和Android开发人员资源帮助我解决了这个问题,所以感谢你们两位;) 帮助文章: http://developer.android.com/guide/tutorials/notepad/notepad-ex3。 html http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle – j7nn7k 2010-04-15 06:33:53

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

做这项工作:) 不知道为什么其他地方一样,它的工作,但这个此外,它按预期工作:) 也感谢您的答复