Это мой статический внутренний класс для создания AlertDialog внутри моего MainActivity класса:Clickable гиперссылок в DialogFragment
public static class AboutDialogFragment extends DialogFragment {
public static AboutDialogFragment newInstance() {
AboutDialogFragment frag = new AboutDialogFragment();
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.ic_dialog_about)
.setTitle(R.string.about)
.setMessage(R.string.about_message)
..........
.create();
}
}
И я показываю, когда вы нажимаете пункт меню, который находится внутри MainActivity:
case R.id.about:
DialogFragment aboutFragment = AboutDialogFragment.newInstance();
aboutFragment.show(getSupportFragmentManager(), "about_dialog");
// Make links clickable
((TextView) aboutFragment.getDialog().findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
return true;
Я пытаюсь сделать ссылки в тексте сообщения кликабельными, используя прокомментированную строку.
Я нашел этот метод here, и он работал для меня при использовании обычного диалога (без фрагментов).
Однако, это первый раз, когда я попытался использовать его в диалоговом окне DialogFragment, и я всегда получаю исключение NullPointerException при попытке найти представление.
Я также пробовал aboutFragment.getView().findViewById(android.R.id.message)
, но это также возвращает null.
Возможно, я нахожу код слишком рано/в неправильном месте?
Любые идеи были бы замечательными!
EDIT: Только что попробовал ((TextView) v.getRootView().findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
и ((TextView) v.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
в onCreateView(), а также пытались в onCreateDialog() без успеха.
все еще получает исключение нулевого указателя ...
См. Мое редактирование. Я пробовал как в onCreateDialog(), так и в onCreateView() после вызова View v = super.onCreateView (...), и это не сработало! – Kavi