如何在AlertDialog中获取可导航到新活动的可点击超链接?

时间:2015-01-15 11:14:34

标签: android android-activity hyperlink alertdialog

我想要做的是在AlertDialog显示的消息中有一个可点击的超链接。我的目标是弹出一个AlertDialog,询问用户是否接受或拒绝类似以下的条款和条件:

enter image description here

点击" Google Play服务条款"超链接,我想开始一个新的活动。我在这里看了一下,我可以找到如何在网站中添加超链接以及在TextView中添加文本的超链接,但我无法为AlertDialog执行此操作。我正在寻找一种方法来设置Dialog以链接到Activity的超链接文本,或者获取显示消息的TextView(我可以自己操作TextView)。

我已经尝试(TextView) getDialog().findViewById(android.R.id.message)来获取消息TextView,但这会返回null。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

使用AlertDialog.setView()在消息区域中显示包含超链接TextView的自定义布局。

E.g。创建一个包含带有id = hyperlink_text

的TextView的hyperlink_layout.xml

它只需要包含AlertDialog的消息区域中显示的内容,您不需要按钮/标题等。

创建类似这样的AlertDialog(来自Activity):

LayoutInflater inflater = getLayoutInflater();
View dialogView = inflater.inflate(R.layout.hyperlink_layout, null);

// get the text view from the view:
TextView hyperlinkText = (TextView)dialogView.findViewById(R.id.hyperlink_text);

// format/set it up how you like...

// handle the click on the hyperlink:
hyperlinkText.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // handle the click, launch the new Activity etc
        }
    });

// create the alert dialog
new AlertDialog.Builder(this)                       
    .setView(dialogView)
    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // handle OK
        }
    })
    .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) { 
            // handle Cancel
        }
    })
    .show();

答案 1 :(得分:0)

最好将此对话框创建为具有透明背景的活动。