将警报对话框的部分文本链接到一个活动。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将警报对话框的部分文本链接到一个活动。相关的知识,希望对你有一定的参考价值。

我已经能够显示一个带有文本信息的AlertDialog。但是,文本中的一个词应该是可点击的,并且是指向另一个活动的链接。

我尝试用SpannableString连接到ClickableSpan,但点击根本无法识别。什么都没有发生...

public class TestDialog extends AppCompatDialogFragment 

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) 

        String text = "This is a test message.";

        SpannableString ss = new SpannableString(text);

        ClickableSpan cs = new ClickableSpan() 
            @Override
            public void onClick(@NonNull View view) 
                System.out.println("Test");
            
        ;

        ss.setSpan(cs, 10, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setMessage(ss)
                .setTitle("Test Title")
                .setPositiveButton("Ok!", new DialogInterface.OnClickListener() 
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) 
                        // do something
                    
                )
                .setNegativeButton("No!", new DialogInterface.OnClickListener() 
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) 
                        System.exit(0);
                    
                );

        return builder.create();
    

谢谢你的帮助

答案

首先,让你的html文本链接可以点击,使用的是 Html.fromHtml:

.setMessage(Html.fromHtml(text))

并且,在Manifest中把这一行添加到你的活动中。

<data android:host="my.app" android:scheme="http"></data>

然后: http:/my.app 应该启动你的活动。

另一答案

好吧,我是在其他几个帖子和youtube视频的帮助下完成的,我使用了一个自定义布局,我在警报对话框中显示。

public class TestDialog extends AppCompatDialogFragment 
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) 

        String text = "This is a test message.";

        SpannableString ss = new SpannableString(text);

        ClickableSpan cs = new ClickableSpan() 
            @Override
            public void onClick(@NonNull View view) 
                Intent test_intent = new Intent(getContext(), Test.class);
                getContext().startActivity(test_intent);
            
        ;

        ss.setSpan(cs, 10, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.testview, null);

        TextView message = (TextView) view.findViewById(R.id.textView);
        message.setMovementMethod(LinkMovementMethod.getInstance());
        message.setPadding(32, 32, 32, 32);
        message.setGravity(Gravity.CENTER_HORIZONTAL);
        message.setText(ss);
        message.setTextSize(16);

        builder.setView(view)
                .setTitle("Test Title")
                .setPositiveButton("Ok!", new DialogInterface.OnClickListener() 
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) 
                        // do something
                    
                )
                .setNegativeButton("No!", new DialogInterface.OnClickListener() 
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) 
                        // do something
                    
                );

        return builder.create();
    

我希望我也能帮助你。

以上是关于将警报对话框的部分文本链接到一个活动。的主要内容,如果未能解决你的问题,请参考以下文章

WebDriver在解除权限对话框警报后未检测到单击的底部元素

Android 在右下角显示警报对话框,并在显示时使用活动

Android- 使用 EditText 帮助修复自定义警报对话框

用户输入太长,警报对话框无法处理

在导航到下一个片段时在底部导航视图中打开警报对话框

将字符串从对话框片段返回到活动 [重复]