2012-05-17 94 views
-1

我跟隨this tutorialAndroid開發人員編碼我的應用程序接收從其他應用程序發送的文本(專門處理從瀏覽器共享發送的文本)。如何編碼我的應用程序接收來自其他應用程序的內容

我希望共享文本出現在我的應用程序的EditText框中(因爲當Messaging被調用以共享時,它自動出現在New Message的主體中)。

這裏是我做了什麼:

Intent intent = getIntent(); 
    String action = intent.getAction(); 
    String type = intent.getType(); 

    if (Intent.ACTION_SEND.equals(action) && type != null) { 
     if ("text/plain".equals(type)) { 
      handleSendText(intent); // Handle text being sent 
     } 
    } 
    else { 
     // Handle other intents, such as being started from the home screen 
    } 

void handleSendText(Intent intent) { 
    String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); 
    if (sharedText != null) { 
     this.edWord.setText(sharedText); 

    } 
} 

而且我已經宣佈private EditText edWord = null;,並根據需要更新的清單。 然而,Eclipse中總是會引發以下錯誤:

05-17 16:32:08.239: E/AndroidRuntime(1507): FATAL EXCEPTION: main 
05-17 16:32:08.239: E/AndroidRuntime(1507): java.lang.RuntimeException: Unable to start activity ComponentInfo{doyle.myapp/doyle.myapp.Myapp}: java.lang.NullPointerException 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.os.Looper.loop(Looper.java:137) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at dalvik.system.NativeStart.main(Native Method) 
05-17 16:32:08.239: E/AndroidRuntime(1507): Caused by: java.lang.NullPointerException 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at doyle.myapp.Myapp.handleSendText(Myapp.java:573) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at doyle.myapp.Myapp.onCreate(Myapp.java:437) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.app.Activity.performCreate(Activity.java:4465) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
05-17 16:32:08.239: E/AndroidRuntime(1507):  ... 11 more 

我不知道什麼是錯我的代碼。我該怎麼做才能解決問題?你能幫忙嗎?

非常感謝您提前。

+1

哪一行是Myapp.java:573? –

+1

你的問題不在於android。這是與Java和調試。如果edWord被聲明爲NULL,它如何能夠執行setText(),我推薦在繼續學習之前學習一些java – keyser

+0

?按照Thepoosh – Rudy

回答

2

您是否嘗試過調試並查看sharedText的值?

UPDATE

只注意到你說

而且我已經聲明爲private的EditText edWord = NULL;並根據需要更新的清單。

如果您未創建新視圖或膨脹xml佈局視圖,則EditText將不會連接到任何內容。嘗試做這樣的事情:

edWord = (EditText) findViewById(R.id.edText); 

或在您的上下文中創建一個新的編輯文本。

+0

非常感謝。是的,我有'public void menuMain() { \t \t //Log.i(MAIN_TAG,「Start menuMain」); \t edWord =(EditText)findViewById(R.id.edWord); \t lstWord =(ListView)findViewById(R.id.lstWord);' –

+0

在這種情況下,我可以參考你的開始我的答案,嘗試調試並逐步檢查所有需要的值對象 – thepoosh

+0

讓我澄清一下:我的應用程序工作正常,沒有錯。現在我只想讓它接受從其他應用發送給它的文本。 –

1

您是否正在通過findViewById初始化edWord請檢查是否爲空?

相關問題