2012-05-17 95 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请检查是否为空?

相关问题