Android 解密:无法启动活动

Android 解密:无法启动活动,android,encryption,android-manifest,fatal-error,Android,Encryption,Android Manifest,Fatal Error,我正在开发一个加密和解密应用程序。应用程序有两个按钮:第一个按钮用于解密文件,第二个按钮用于解密消息。 两个按钮都在同一活动i:e DecryptActivity.java中执行 256 if (mSource.getCurrentView().getId() == R.id.sourceMessage && 257 mMessage.getText().length() == 0) { 258 ClipboardManager clip = (

我正在开发一个加密和解密应用程序。应用程序有两个按钮:第一个按钮用于解密文件,第二个按钮用于解密消息。 两个按钮都在同一活动i:e DecryptActivity.java中执行

 256   if (mSource.getCurrentView().getId() == R.id.sourceMessage &&
 257       mMessage.getText().length() == 0) {
 258       ClipboardManager clip = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
 259       String data = "";
 260       Matcher matcher = Apg.PGP_MESSAGE.matcher(clip.getText());
 261       if (!matcher.matches()) {
 262           matcher = Apg.PGP_SIGNED_MESSAGE.matcher(clip.getText());
 263       }
 264       if (matcher.matches()) {
 265           data = matcher.group(1);
 266           mMessage.setText(data);
 267           Toast.makeText(this, R.string.usingClipboardContent,   
267 Toast.LENGTH_SHORT).show();
268       }
269    }
当我按下“解密文件”按钮时,它运行平稳,但当我按下“解密消息”按钮时,日志cat显示错误:

 07-24 13:09:26.732: W/dalvikvm(27183): threadid=1: thread exiting with uncaught exception (group=0x419aeba8)
07-24 13:09:26.732: E/AndroidRuntime(27183): FATAL EXCEPTION: main
07-24 13:09:26.732: E/AndroidRuntime(27183): Process: gargdk.android.mailencryption, PID: 27183
07-24 13:09:26.732: E/AndroidRuntime(27183): java.lang.RuntimeException: Unable to start activity ComponentInfo{gargdk.android.mailencryption/gargdk.android.mailencryption.DecryptActivity}: java.lang.NullPointerException
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.os.Handler.dispatchMessage(Handler.java:102)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.os.Looper.loop(Looper.java:136)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.app.ActivityThread.main(ActivityThread.java:5001)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at java.lang.reflect.Method.invokeNative(Native Method)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at java.lang.reflect.Method.invoke(Method.java:515)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at dalvik.system.NativeStart.main(Native Method)
07-24 13:09:26.732: E/AndroidRuntime(27183): Caused by: java.lang.NullPointerException
07-24 13:09:26.732: E/AndroidRuntime(27183):    at java.util.regex.Matcher.reset(Matcher.java:177)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at java.util.regex.Matcher.<init>(Matcher.java:90)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at java.util.regex.Pattern.matcher(Pattern.java:297)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at gargdk.android.mailencryption.DecryptActivity.onCreate(DecryptActivity.java:260)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.app.Activity.performCreate(Activity.java:5231)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-24 13:09:26.732: E/AndroidRuntime(27183):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-24 13:09:26.732: E/AndroidRuntime(27183):    ... 11 more  
因为
clip.getText()
可以在剪贴板中没有文本时返回
null
。要避免此处出现空指针,请调用
clip.hasText()
,查看剪贴板中是否有文本

例如:

if(clip.hasText()) {
    // Do stuff with clip
}

u post ur code??code以及xmlcheck在
DecryptActivity.onCreate(DecryptActivity.java:260)
第177行有什么?
clip.getText()
可以返回nullclip.hasText()只检查clip.getText()是否接收到文本。您需要执行如下操作:if(clip.hasText()){matcher=Apg.PGP_MESSAGE.matcher(clip.getText());etc}
if(clip.hasText()) {
    // Do stuff with clip
}