添加链接到alertdialog文本android

时间:2015-03-04 10:36:59

标签: android hyperlink alertdialog

我正在创建一个alertdialog,在消息中我放了一个String。该字符串带有一些我希望将它们作为链接的文本,因此当它们显示在对话框中时,用户可以单击它们并转到其他视图。让我告诉你一个我想要的例子:

public class Activity extends FragmentActivity{

(...)

    public void myMethod(){
        String message = "Some links: link1, link2, link3";
        AlertDialog.Builder builder = new AlertDialog.Builder(this)
        builder.setTitle("This is a title");
        builder.setMessage(message);
        builder.setCancelable(true);
        builder.setOnCancelListener(onCancelListener);
        builder.create().show();
    }
}

我想对link1,link2和link3做些什么,所以当它们显示在对话框中时,它们显示为链接。然后,当用户点击link1时,会显示一个新活动;当点击link2时,会显示另一个视图,并且与link3相同。

我想要一个onlinkclicklistener或类似的东西,所以当用户点击链接时我会捕获它。

有关如何做到这一点的想法? 我希望你能理解我想要的东西:)。

2 个答案:

答案 0 :(得分:7)

public void myMethod(){
        String link1 = "<a href=\"http://www.google.com\">http://www.google.com</a>";
        String message = "Some links: "+link1+"link1, link2, link3";
        Spanned myMessage = Html.fromHtml(message);


        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("This is a title");
        builder.setMessage(myMessage);
        builder.setCancelable(true);
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
        TextView msgTxt = (TextView) alertDialog.findViewById(android.R.id.message);
        msgTxt.setMovementMethod(LinkMovementMethod.getInstance());
    }

答案 1 :(得分:0)

正如我在评论中所说,你应该使用自定义对话框。

所以为自定义对话框的布局创建一个新的xml文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/button1"
        android:text="firstButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/dialogButtonOK"
        android:layout_width="100px"
        android:layout_height="wrap_content"
        android:text=" Ok "
        android:layout_marginTop="5dp"
        android:layout_marginRight="5dp"
        />

    <Button
        android:id="@+id/button2"
        android:text="SecondButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

以上将是您自定义对话框的布局。

现在在您使用AlertDialog.Builder使用以下代码的方法中。

public void myMethod(){
final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.custome);
                dialog.setTitle("Title...");

                // set the custom dialog components - text, image and button
                Button button1 = (Button) dialog.findViewById(R.id.button1);
                button1.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent intent = new Intent(getBaseContext(),MyActivity2.class);
                        startActivity(intent);
                    }
                });

                Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });

                dialog.show();
            }
}

因此,这将显示您的自定义对话框,其中包含在上面的xml中指定的布局,当您单击button1时,它将在新视图中打开MyActivity2。

有关详情,请查看here