2015-11-06 39 views
0

我想在我的对话框中添加一些链接,我有标准文本,但我也想有一些可点击的链接。但我得到NPE错误。我尝试了很多解决方案,但我总是以nullpointerexception错误结束;尝试添加链接到我的对话框,但得到NullPointerException

这里是我的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
      builder = new AlertDialog.Builder(new ContextThemeWrapper(this, 
        android.R.style.Theme_Holo_Light_Dialog)); 
     } else { 
      builder = new AlertDialog.Builder(this); 
     } 

     builder.setTitle(getString(R.string.dialogTitle) + " " + getResources().getString(R.string.app_name)); 
     String msg = getResources().getString(R.string.dialogMessage); 
     final SpannableString DialogMessage = new SpannableString(msg); 
     Linkify.addLinks(DialogMessage, Linkify.ALL); 
     builder.setMessage("Version " + AppVersion + "\n" + DialogMessage); 
     builder.setNeutralButton(getString(R.string.neutralText), 
       new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 
     builder.show(); 
     ((TextView) dialog.findViewById(android.R.id.message)) 
     .setMovementMethod(LinkMovementMethod.getInstance()); 

这里是我的logcat:

11-06 16:36:36.774: E/AndroidRuntime(8521): FATAL EXCEPTION: main 
11-06 16:36:36.774: E/AndroidRuntime(8521): java.lang.NullPointerException 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at com.sm.flashlightpro.MainFlashlightActivity.showInfoDialog(MainFlashlightActivity.java:213) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at com.sm.flashlightpro.MainFlashlightActivity$3.onClick(MainFlashlightActivity.java:124) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at android.view.View.performClick(View.java:4421) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at android.view.View$PerformClick.run(View.java:17903) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at android.os.Handler.handleCallback(Handler.java:730) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at android.os.Handler.dispatchMessage(Handler.java:92) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at android.os.Looper.loop(Looper.java:213) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at android.app.ActivityThread.main(ActivityThread.java:5225) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at java.lang.reflect.Method.invoke(Method.java:525) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
11-06 16:36:36.774: E/AndroidRuntime(8521):  at dalvik.system.NativeStart.main(Native Method) 

线213是:

((TextView) dialog.findViewById(android.R.id.message)) 
+0

看来,对话框为空。你的变量对话框在哪里?添加更多代码。 – lewkka

+0

是的。我忘了最重要的部分。 - 一直在寻找接近这个问题,我没有看到整个图片。但@ρяσѕρєяK答案解决了这个错误。 –

回答

2

大概dialognull

尝试如使用Dialog对象,它是从show()方法返回:

dialog=builder.show(); 
TextView textView=(TextView)dialog.findViewById(android.R.id.message); 
+1

这已修复了NPE错误。我不相信我错过了最重要的部分哈哈。但是,我仍然无法点击链接。但这是不同的问题。现在我能够获得文本变量,它应该很容易。谢谢。将在3分钟内接受答案 –

+0

@SlimC .:可能需要为TextView设置'android:linksClickable =“false”'属性 –

+1

这不是一个自定义对话框,但我会查看相关文档。现在应该很容易,我有textView。 :D –

0

哪里是你的对话框,从中?

((TextView) dialog.findViewById(android.R.id.message))

+0

是的,我忘了最重要的部分哈哈。我从来没有想到对话没有初始化。 –

相关问题