android - DialogFragment 中的可点击超链接

标签 android android-fragments android-alertdialog android-dialogfragment

这是我的静态内部类,用于在我的 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/

相关文章:

android - 如何在 Android 中将 ImageView 转换为位图图像

java - 错误: cannot find symbol method setSupportImageTintList(ColorStateList)

java - Android 应用程序中的警报对话框错误

java - 创建对话框时出现 android.view.WindowManager$BadTokenException 错误

android - ImageButton 属性检查

java - Android NSD(网络服务发现)注册监听器已在使用中

Android(Mobile)视觉摄像头亮度很低

java - 所有 fragment 都在 Activity 时加载

java - fragment 、AsyncTask 和监听器

android - FragmentActivity 错误 Android Studio