这是我的静态内部类,用于在我的 MainActivity 类中创建一个 AlertDialog:
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它在使用常规对话框(无 fragment )时对我有用。
但是,这是我第一次尝试在 DialogFragment 上使用它,并且在尝试查找 View 时总是得到 NullPointerException。
我也试过 aboutFragment.getView().findViewById(android.R.id.message)
但同样返回 null。
也许我调用代码太早/在错误的地方?
任何想法都会很棒!
编辑:刚试过 ((TextView) v.getRootView().findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
和
((TextView) v.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
在 onCreateView() 中,也在 onCreateDialog() 中尝试但没有成功。
仍然得到空指针异常...
最佳答案
希望您已经明白了这一点,但我只是做了同样的事情并想在某个地方记录下来。将其放入您的 DialogFragment
类中:
@Override
public void onStart() {
super.onStart();
((TextView) getDialog().findViewById(android.R.id.message))
.setMovementMethod(LinkMovementMethod.getInstance());
}
关于android - DialogFragment 中的可点击超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9142336/