2015-11-06 67 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

是的,我忘了最重要的部分哈哈。我從來沒有想到對話沒有初始化。 –