如何在我的应用程序中创建简单的超文本链接?

时间:2013-03-12 05:26:55

标签: android hyperlink textview

我只是想点击一个简单的TextView在浏览器中打开一个链接。

XML:

    <TextView
        android:text="@string/account_sign_up_link"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sign_up_link"
        android:autoLink="web"
        android:onClick="signUpLink"
        android:clickable="true" />

爪哇:

    public class signUpLink extends Activity {
        public void onClick(View v) {
            ...
        }
    }



我无法弄清楚为什么Eclipse不断抛出这个错误。

错误:

Illegal modifier for the local class signUpLink; only abstract or final is permitted



更新

我的第一个问题是它在protected void onCreate(Bundle savedInstanceState),所以我把它从那里拿走了。

最终我想出了这个:

public void signUpLink(View v){
    Uri uriUrl = Uri.parse("http://mysite.com/signup"); 
    Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
    startActivity(launchBrowser);
}

5 个答案:

答案 0 :(得分:2)

  

void是变量signUpLink的无效类型

需要在类定义中进行方法声明。当尝试在另一个方法中声明一个方法时,会报告与此类似的错误。

public class SignUpLink extends Activity {

    public void onCreate(Bundle bundle) {
           ...

    }
    public void signUpLink(View v) {
        //....Code here
    }
}

并遵循类的命名约定。

答案 1 :(得分:0)

变化:

public class signUpLink extends Activity {
    public void onClick(View v) {
        ...
    }
}

为:

public void signUpLink(View v) {
    //Code from onClick(View v) goes here
}

此方法必须进入您正在使用XML布局的Activity类。当您将onClick指定为XML属性时,Android将查找具有该名称的方法,该方法将View作为参数放置在布局已充气的活动中。

之前,您正在创建一个新类,而不是一个新方法。

答案 2 :(得分:0)

使用Html.fromHtml

   Text1.setText(
        Html.fromHtml(
            "<a href=\"http://www.google.com\">Google</a> "));
    Text1.setMovementMethod(LinkMovementMethod.getInstance());

答案 3 :(得分:0)

使用此代码段

    TextView url = ((TextView)findViewById(R.id.myWebSite));
    Linkify.addLinks(url, Linkify.WEB_URLS);

这对我有用。别忘了在清单文件中定义互联网许可。

答案 4 :(得分:0)

由于您的xml布局将TextView的{​​{1}}操作指定为“onClick”,因此内容视图为xml文件需要实现该方法的signUpLink像这样:

Activity

或者,如果您想在public class MyActivity extends Activity { @Override public void onCreate(final Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.your_layout_file); } public void signUpLink(final View view) { // Do signup action } } 中使用此布局并将逻辑封装到Fragment本身,则需要执行更类似的操作:

Fragment