Android:从字符串的一部分打开alertdialog?

时间:2013-08-18 12:36:07

标签: java android eclipse string alertdialog

我有一个带有字符串的CheckBox,上面写着“我已阅读并了解条款和条件”。现在,我想在一个链接上创建“条款和条件”,这个链接打开了一个可以读取条款和条件的alertdialog。没什么特别的。

我正在考虑以下方面:

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

是否有可能,我现在应该在哪里使用“open alertdialog”? 如果不能这样做,我该怎么做?

增加: 要打开网址,您可以使用以下代码:

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

但是如何从字符串中打开alertdialog或者说另一个屏幕呢?我见过这样做的应用程序,所以当然可以,但是怎么样?

编辑: 这是我用于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
  • 令牌“append”上的语法错误,此令牌后预期的标识符

1 个答案:

答案 0 :(得分: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!