这是我的问题。我按照Android文档中的设置方式设置按钮,但是我收到警告,按钮不会执行任何操作。
这是我的Java代码:
package com.variDice;
import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
public class VariDiceActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//die1Clicked();
}
private void die1Clicked() {
ImageButton die1button = (ImageButton)findViewById(R.id.die1button);
die1button.setImageResource(R.drawable.icon);
}
}
...和XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1" android:layout_gravity="center_horizontal">
<ImageView
android:id="@+id/varidice_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@drawable/icon"></ImageView>
<ImageButton
android:id="@+id/die1button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@null"></ImageButton>
</LinearLayout>
......和警告:
The method die1Clicked from the type VariDiceActivity is never used locally.
我必须说我对Android开发完全陌生。我为iPhone制作了我的应用程序,现在我正在尝试为Android制作一个版本。 iPhone版本太容易了,因为更好的界面构建器(所以我可以通过这种方式进行动作并将其连接到按钮),所以这对我来说几乎是难以理解的。换句话说,我不明白你如何将一个动作连接到按钮。有人可以告诉我我做错了吗?
答案 0 :(得分:4)
在你的xml中试试这个:
<ImageButton
android:id="@+id/die1button"
android:onClick="die1Clicked"
...></ImageButton>
在您的代码中,将方法签名更改为:
public void die1Clicked(android.view.View v) {
ImageButton die1button = (ImageButton)findViewById(R.id.die1button);
die1button.setImageResource(R.drawable.icon);
}
答案 1 :(得分:4)
要将某些行为绑定到UI按钮,您需要注册一个接收特定事件类型通知的侦听器。在您的情况下,您注册一个OnClickListener(用于click事件);就像在下面的代码片段中一样:
// create the implementation of OnClickListener
private OnClickListener mDie1Listener = new OnClickListener() {
public void onClick(View v) {
// do something when the button is clicked
}
};
protected void onCreate(Bundle savedValues) {
...
// get the button from layout
Button button = (Button)findViewById(R.id.die1button);
// register the onClick listener with the implementation above
button.setOnClickListener(mDie1Listener);
...
}
答案 2 :(得分:3)
您需要为按钮添加点击监听器。将其放入onCreate()
:
ImageButton die1button = (ImageButton)findViewById(R.id.die1button);
die1button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// What to do when the button is clicked
});
答案 3 :(得分:0)
SO上的大多数答案倾向于使用'setOnClickListener'而不是使用xml属性。 我个人更喜欢使用xml来制作可在Android中点击的项目。
您所犯的错误是将您的功能设为私有。单击该项后调用的函数应该是公共的。
你应该记住三件事:
在xml中定义2个属性。
机器人:可点击= “真” 机器人:的onClick = “functionName”
在Activity文件中定义该函数。确保将该功能保持公开。
public void functionName(View v){
// TODO自动生成的方法存根
}
确保将“View v”作为该函数的参数传递。