0

我有一个带有字符串的复选框,上面写着“我已阅读并理解条款和条件”。现在我想将“条款和条件”一词添加到一个链接中,该链接打开一个警报对话框,可以在其中阅读条款和条件。没什么特别的。

我在想一些事情:

<string name="cont_agree">I have read and understood the <a ref="open alertdialog">terms and conditions.</a></string>

有可能吗,我应该在现在说“打开警报对话框”的地方使用什么?如果不能这样做,我该怎么办?

加法: 要打开一个网址,您将使用以下代码:

<string name="cont_agree"><a ref="http://www.stackoverflow.com">Stackoverflow</a></string>

但是如何从字符串中打开警报对话框,或者说另一个屏幕?我见过执行此操作的应用程序,因此这是可能的,当然,但是如何?

编辑:这是我用于 SpannableStringBuilder 的代码:

SpannableStringBuilder text = new SpannableStringBuilder();
text.append(getString(R.string.before));
//Now create a ClickableSpan
ClickableSpan clickableSpan = new ClickableSpan() {  
            @Override  
            public void onClick(View view) {                

                d.show(); //Here dialog will be displayed
            }  
        };
//Now append the TOS string
text.append(getString(R.string.popup));
//Declare that the "TOS" string is a clickableSpan
text.setSpan(clickableSpan, getString(R.string.before).length(),getString(R.string.before).length()+getString(R.string.popup).length(), 0); //Check on API setSpan method
((CheckBox)findViewById(yourview)).setMovementMethod(LinkMovementMethod.getInstance()); 
((CheckBox)findViewById(yourview)).setText(text, BufferType.SPANNABLE);

我仍然在第一行“text.append”得到一些标记。此行有多个标记:

  • 缺少该方法的返回类型
  • 令牌“)”上的语法错误,{ 应在此令牌之后
  • R.string.before 无法解析为类型
  • 令牌“)”上的语法错误,无效的 VariableDeclaratorId
  • 令牌“附加”上的语法错误,此令牌后应有标识符
4

1 回答 1

2

首先设置你的对话框

Dialog d = new Dialog(context);
d.setTitle... etcetc

在你的 values.xml 中创建 2 个字符串

<string name="before">I have read and understood the</string>
<string name="popup">TOS</string</string>

现在您可以使用 SpannableStringBuilder

SpannableStringBuilder text = new SpannableStringBuilder();
text.append(getString(R.string.before));
//Now create a ClickableSpan
ClickableSpan clickableSpan = new ClickableSpan() {  
            @Override  
            public void onClick(View view) {                

                d.show(); //Here dialog will be displayed
            }  
        };
//Now append the TOS string
text.append(getString(R.string.popup));
//Declare that the "TOS" string is a clickableSpan
text.setSpan(clickableSpan, getString(R.string.before).length(), getString(R.string.before).length()+getString(R.string.popup).length(), 0); //Check on API setSpan method
((CheckBox)findViewById(yourview)).setMovementMethod(LinkMovementMethod.getInstance()); 
((CheckBox)findViewById(yourview)).setText(text, BufferType.SPANNABLE); //AAAAND WE'RE DONE!
于 2013-08-21T10:57:30.873 回答