将警报对话框的部分文本链接到一个活动。
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在解除权限对话框警报后未检测到单击的底部元素