我只是想点击一个简单的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);
}
答案 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