2013-01-18 80 views
1

因此,我遵循this教程,以便我的应用程序可以接收内容。但是当我尝试将某些内容分享给我的应用程序时,它会崩溃。Android应用程序从其他应用程序接收内容时崩溃

下面的代码:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

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

void handleSendText (Intent intent) { 
     String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); 
     if (sharedText != null) { 
      //Display definition. Use HTTP GET for Wikitonary. 

      CardUI mCardView = (CardUI) findViewById(R.id.cardsview); 
      mCardView.setSwipeable(true); 

      //mCardView.addCard(new MyCard("1 card")); 



     } 

    } 

崩溃时,它抛出所有这些错误:

01-18 17:24:34.735: E/AndroidRuntime(1937): FATAL EXCEPTION: main 
01-18 17:24:34.735: E/AndroidRuntime(1937): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.dictionary/com.example.dictionary.MainActivity}: java.lang.NullPointerException 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.os.Looper.loop(Looper.java:137) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at dalvik.system.NativeStart.main(Native Method) 
01-18 17:24:34.735: E/AndroidRuntime(1937): Caused by: java.lang.NullPointerException 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at com.example.dictionary.MainActivity.handleSendText(MainActivity.java:42) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at com.example.dictionary.MainActivity.onCreate(MainActivity.java:29) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.app.Activity.performCreate(Activity.java:5104) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
01-18 17:24:34.735: E/AndroidRuntime(1937):  ... 11 more 
01-18 17:24:43.078: I/Process(1937): Sending signal. PID: 1937 SIG: 9 

谁能告诉我有什么不对?

+0

我有同样的问题,但应用程序崩溃后,我修改了清单,请你张贴你的Manifest文件?这可能会导致问题。 –

回答

0

它接缝堆栈跟踪的帮助部分:

01-18 17:24:34.735: E/AndroidRuntime(1937):  at com.example.dictionary.MainActivity.handleSendText(MainActivity.java:42) 

=>看看线42

如果你不喜欢调试器(或不能使用一个由于某种原因),记录可疑变量的值以找到null

+0

如果'intent'为null,'String action = intent.getAction();'将首先失败。基于堆栈跟踪,OP将它放入'handleSendText'中,因此'intent'不应该为null。 –

+0

@Aaron McIver:你说得对。你找到了更好的可疑'mCardView'。很明显,如果我们有行号。 – MrSmith42

2

看起来您的mCardViewnull因此您拨打mCardView.setSwipeable(true);的电话将失败。

+0

就是这样。我正在使用外部[图书馆](http://www.androidviews.net/2012/12/cardsui/)。那么我怎样才能修复null变量呢?我(想)我正确地添加了库。 – irosenb

+1

看起来好像您无法找到您在项目中定义的视图,我需要更多详细信息来帮助找出原因。如果这是IDE的问题并正确导入库,我会建议关闭它并打开一个新问题。此外,让图书馆先工作应该是你的第一步。不要试图一次性解决所有问题,因为这会使诊断难度超过预期。 –