2010-04-13 56 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)));  
    } 

做這項工作:) 不知道爲什麼其他地方一樣,它的工作,但這個此外,它按預期工作:) 也感謝您的答覆