Android的控件有很多,这里以添加button的点击事件为例。
在布局文件中为button指定点击方法 布局文件activity_main.xml文件中,部分代码如下: <!--onClick属性值设置为点击方法名--> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:text="Click Me" android:onClick="click"/>MainActivity.java部分代码:
/** * 实现控件中的点击方法 * @param view */ protected void click(View view){ //输出信息 Toast.makeText(this,"你点击了按钮",Toast.LENGTH_SHORT).show(); return; } 创建内部类 使用这种点击事件的好处是,按钮比较多时onClick方法中可以用Switch语句来控制不同的点击事件逻辑。 activity_main.xml文件部分代码: <!--设置控件id--> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:text="Click Me" android:id="@+id/buttonClick"/>MainActivity.java部分代码:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //通过findViewById方法获取button的引用,并转换为Button对象。 Button buttonClick = (Button) findViewById(R.id.buttonClick); //为buttonClick设置监听事件,参数为内部类对象。 buttonClick.setOnClickListener(new MyButton()); } /** * 创建内部类MyButton,用于实现监听接口。 */ private class MyButton implements View.OnClickListener{ @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"你点击了这个按钮",Toast.LENGTH_SHORT).show(); return; } } 主类中实现OnClickListener接口 还可以在主类中实现该接口,通过Switch语句判断哪个按钮被点击。 值得注意的是这里的参数this代表的是该Activity的引用。由于Activity的方法中实现了OnClickListener接口,这里this代表了OnClickListener的引用。MainActivity.java部分代码:
//类实现了监听器接口 public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //通过findViewById方法获取button的引用,并转换为Button对象。 Button buttonClick = (Button) findViewById(R.id.buttonClick); //按钮绑定接口。 buttonClick.setOnClickListener(this); } /** * 重写实现监听接口的onClick方法。 * @param v */ @Override public void onClick(View v) { Toast.makeText(this,"你点击了此按钮",Toast.LENGTH_SHORT).show(); return; } } 匿名内部类 此种方法适用于按钮较少或者只有一个按钮时,直接创建OnClickListener的匿名内部类传入按钮的setOnClickListener()参数中。 MainActivity.java中部分代码如下: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //通过findViewById方法获取button的引用,并转换为Button对象。 Button buttonClick = (Button) findViewById(R.id.buttonClick); //设置匿名内部类实现点击事件 buttonClick.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"你点击了此按钮",Toast.LENGTH_SHORT).show(); return; } });实现OnClickListener接口时该接口在Android的两个包下都有,为按钮设置点击事件要导入android.view.View包。而非android.content.DialogInterface。