我已经用XML创建了一些按钮,我有方法可以点击打开一个URL。如何将此方法链接到我的按钮,以便在点按/ onClick时它将调用该方法。
以下是方法代码:
public void openResource() {
Uri uri = Uri.parse("http://librarywales.org");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
我在onCreate方法中创建了一个XML Button实例:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button libButton = (Button) findViewById(R.id.button1);
}
如何将该方法添加到libButton实例?
我现在已经在'vins'的帮助下解决了上述问题,但是当我在AVD上运行这个应用程序并点击一个按钮时,会弹出一个android消息框说。 “不幸的是,ApplicationName已停止工作。”
任何人都知道这是为什么?
谢谢, 丹
答案 0 :(得分:1)
在按钮声明后添加此内容
libButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//open resource method call here...
}
});
答案 1 :(得分:1)
放
android:onClick="openResource"
在xml文件的按钮属性中。
之类的,
<Button
android:id="@+id/button1"
.
.
android:onClick="openResource"
/>
请注意,此功能仅适用于Android 2.1(API级别7)及更高版本
答案 2 :(得分:0)
如果页面中有许多按钮,则可以使用button.setOnClickListener(this);
并覆盖方法中的OnClick()方法,使用Switch语句来匹配选择了哪个View。这是优化和有效的方式....
答案 3 :(得分:0)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button libButton = (Button) findViewById(R.id.button1);
libButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(v.getId()==R.id.button1){
Uri uri = Uri.parse("http://librarywales.org");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
});
}
答案 4 :(得分:0)
public class YourActivity extends Activity implements OnClickListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button libButton =(Button) findViewById(R.id.button1);
libButton.setOnClickListener(this);
Button OtherButton =(Button) findViewById(R.id.button2);
OtherButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1: openResource();
break;
case R.id.button2: //do something for second button...
default : break;
}