点击TextView文本链接后如何打开浏览器

15

我创建了一个包含一些文本的活动。我使得在TextView中的链接可点击,而且它的工作很正常(链接下划线可见)。

但是当我点击该链接时,它会显示不幸地,应用程序已停止响应。这是我的代码:

TextView的代码:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/home"
    android:text="@string/google" />

Java 代码(位于 protected void onCreate(Bundle savedInstanceState)):

 TextView txt= (TextView) findViewById(R.id.home); //txt is object of TextView
    txt.setMovementMethod(LinkMovementMethod.getInstance());

string.xml文件的代码:

<string name="google">
    <a href="www.google.com">Home page</a>
</string>

这是我的应用程序显示的内容,

应用截图

现在,如果我点击首页链接,会出现错误消息,提示很抱歉,应用程序已停止响应,我该怎么办?

请帮忙!


请添加崩溃日志。 - USKMobility
请参考此链接:https://dev59.com/6nE85IYBdhLWcg3whT5r - rafsanahmad007
4个回答

17

只需在您的TextView XML中添加以下行。

android:autoLink="web"

2
我的Java代码没有onClickListener(),你应该也给出那段代码。如果你回答任何人的问题,请从现在开始给出完整的答案。无论如何,感谢你的帮助。 - stodgy.nerd

15

感谢那些通过他们的答案帮助我的人。

这就是完整答案的样子。

activityname.xmlTextView 中写入 android:autoLink="web"

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/home"
    android:autoLink="web
    android:text="@string/google" />
java文件中编写创建onClickListener()的代码。
TextView txt= (TextView) findViewById(R.id.home); //txt is object of TextView
    txt.setMovementMethod(LinkMovementMethod.getInstance());
    txt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent browserIntent = new Intent(Intent.ACTION_VIEW);
            browserIntent.setData(Uri.parse("http://www.google.com"));
            startActivity(browserIntent);
        }
    });

没有对string.xml文件进行更改。

感谢@AdnanAmjad @sarvesh @Mikejess以及那位删除了评论的人。


2
我注意到你手动将uri传递给了intent。如果你有一个包含多个链接的长文本视图,该怎么办?如何在程序上找到被点击的链接并从字符串资源文件中提取特定的url? - Mr.Drew

5
text_view.setOnClickListener(new OnClickListener(){

     String url = textView.getText().toString();
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);

});

它没有起作用。 - stodgy.nerd
我找到了丢失的密钥,谢谢。 - stodgy.nerd
这是对我有效的一个;我只是为OnClickListener添加了缺失的实现方法,以使其完整。 - hernanemartinez

1

请检查这个,它对我有效,我已经检查了TextView和Button的结果,你可以使用它,在文本位置替换链接即可。

            <Button
                android:layout_width="fill_parent"
                android:layout_height="20dp"
                android:text=" Click To Send Email "
                android:textColor="#FFF"
                android:clickable="true"
                android:background="#cf1414"
                android:linksClickable="true"
                android:id="@+id/emailbutton"/>

我的Java代码没有onClickListener(),你应该也给出那段代码。从现在开始,请给出完整的答案,如果你回答任何人的问题。无论如何,感谢你的帮助。 - stodgy.nerd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接