Android не может получить объект сообщения в AlertDialog

Я пытаюсь установить linktextcolor сообщения в AlertDialog. Но когда я пытаюсь findViewById, мое приложение падает. Что я делаю не так? Нужно ли мне иметь сообщение в XML для этой активности?

final AlertDialog d = new AlertDialog.Builder(new ContextThemeWrapper(SplashPage.this, R.style.Theme_Sherlock_Light_Dialog)) .setIcon(android.R.drawable.ic_dialog_info).setTitle(getString(R.string.termsTitle)) //.setView(message).setCancelable(false) .setMessage(Html.fromHtml(getString(R.string.terms))).setCancelable(false) .setPositiveButton(getString(R.string.accept), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { app.setTermsAccepted(true); dialogInterface.dismiss(); Intent intent = new Intent(SplashPage.this, LoginPage.class); startActivity(intent); } }).create(); //FAILING: TextView TV = (TextView)d.findViewById(android.R.id.message); //TV.setLinkTextColor(Color.MAGENTA); 

Я посмотрел документацию AlertDialog и выяснилось, что когда вы вызываете его метод, он ищет XML, который вы обработали в его методе onStart ( http://developer.android.com/reference/android/app/Dialog.html# FindViewById% 28int% 29 ). Вместо этого просто вызовите метод findViewById вашей деятельности (например, если он находится в классе активности, просто вызывая:

 TextView TV = (TextView) findViewById(android.R.id.message); 

должно сработать.)

Если вы используете диалоговое окно DialogFragment, он доступен после метода DialogFragment.onStart (), как это было в предыдущем ответе.

 @Override public void onStart() { super.onStart(); final TextView textView = (TextView) getDialog().findViewById(android.R.id.message); //Do something! }