Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android Textview上使用斜杠创建可点击的url链接_Android_Url_Textview_Clickable - Fatal编程技术网

如何在android Textview上使用斜杠创建可点击的url链接

如何在android Textview上使用斜杠创建可点击的url链接,android,url,textview,clickable,Android,Url,Textview,Clickable,我正在使用“setMovementMethod”在TextView上创建一个可点击的url。最好查看以下代码: 1. String value = "By signing up, you agree to our <a href=\"https://app.mywebsite.com/terms\">My App Term</a> and confirm that you have read our <a href=\"https://app.mywebsite.c

我正在使用“setMovementMethod”在TextView上创建一个可点击的url。最好查看以下代码:

1. String value = "By signing up, you agree to our <a href=\"https://app.mywebsite.com/terms\">My App Term</a> and confirm that you have read our <a href=\"https://app.mywebsite.com/privacypolicy\">Privacy Policy</a>";

2. TextView text = (TextView) findViewById(R.id.text);

3. text.setText(Html.fromHtml(value));

4. text.setMovementMethod(LinkMovementMethod.getInstance());
1。String value=“通过注册,您同意我们的并确认您已阅读我们的”;
2.TextView text=(TextView)findViewById(R.id.text);
3.text.setText(Html.fromHtml(value));
4.setMovementMethod(LinkMovementMethod.getInstance());
问题在于url的“.com”后面的斜杠。如果我删除斜杠,然后像那样写url,那么它工作得很好,但是当我像那样写url时,链接就不能点击了。我可以看到突出显示的链接,但当点击链接时,它就不起作用了

我怎样才能解决这个问题?非常感谢。

首先

String value = "By signing up, you agree to our <a href="https://app.mywebsite.com/terms">My App Term</a> and confirm that you have read our <a href="https://app.mywebsite.com/privacypolicy">Privacy Policy</a>";
String value=“通过注册,您同意我们的并确认您已阅读我们的”;
是非法的,因为-您不允许使用双引号,即“在另一个双引号内”

因此,正确的形式应该是:

String value = "By signing up, you agree to our <a href='https://app.mywebsite.com/terms'>My App Term</a> and confirm that you have read our <a href='https://app.mywebsite.com/privacypolicy'>Privacy Policy</a>";
String value=“通过注册,您同意我们的并确认您已阅读我们的”;
当我进行此更改时,我可以单击链接,否则代码甚至无法编译

其次,检查构建版本并使用
Html.fromHtml(string,int)


更多信息如下:

创建一个如下所示的函数:

fun applyHtmlToTextView(tv: TextView?, html: String) {
    if (tv == null)
        return

    tv.movementMethod = LinkMovementMethod.getInstance()

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        tv.text = Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT)
    } else {
        tv.text = Html.fromHtml(html)
    }
}
将字符串添加到
string.xml
文件中,如下所示:

<string name="lb_your_string"><![CDATA[<a href="https://google.com”>Google.</a>]]></string>
或者,您可以将
变量编辑为:

String value = "By signing up, you agree to our <a href=https://app.mywebsite.com/terms>My App Term</a> and confirm that you have read our <a href=https://app.mywebsite.com/privacypolicy>Privacy Policy</a>"
String value=“通过注册,您同意我们的并确认您已阅读我们的”

已删除
\”

抱歉。我对原始代码中的每个双引号都进行了转义(\),但在这里看不到它。我像你所说的那样修改了代码(即使只有一个引号),但是如果(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){textview.setText(Html.fromHtml(value,Build.VERSION.SDK_INT));}或者{textview.setText(Html.fromHtml(value))}的话,它仍然不起作用(如果我去掉斜杠的话,它就起作用了)你在用哪个版本的android进行测试?我试过馅饼和10块,似乎有用。嗨,普里亚布拉塔。我正在安卓7和安卓10上测试。只有当我删除url上的斜杠时才有效。我感觉这个问题与其他问题有关。是否有可能复制该问题并将其放入git中?我无法重现这个问题。我发现了错误@Priyabrata。我们已经在Google Play控制台上配置了应用程序的url。当您在我们的域中单击url时,应用程序将打开。当我们点击链接时,什么都没有发生,因为我们已经在应用程序上了。我发现了创建新项目的错误。当我点击新应用程序上的url时,我发现原来的应用程序被打开了,而不是浏览器。是我的错。对不起大家。我将尝试此库来捕获url并能够打开它。很抱歉,我从服务器获取文本(值字符串)。我不能使用string.xml文件。@亚历克斯:我更新了我的答案。您可以要求后端人员更改消息。我希望它能帮助hanks@johnle,但我试图从后端删除\,但它只对url有效,没有斜杠。
String value = "By signing up, you agree to our <a href=https://app.mywebsite.com/terms>My App Term</a> and confirm that you have read our <a href=https://app.mywebsite.com/privacypolicy>Privacy Policy</a>"