1.普通内部类(常用)
xml
<Button android:hint="reset" android:layout_columnWeight="1" android:id="@+id/reset"/>
java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); //添加监听器 //监听器 本身是一个接口,需要写实现类 Button bt_reset = (Button)findViewById(R.id.reset); //第一种 设置监听器的实现类的实例 bt_reset.setOnClickListener(new ResetButtonClickListen());
} //1.用内部类实现监听器的接口 private class ResetButtonClickListen implements View.OnClickListener { public void onClick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); //在内部类里调用外部类的实例:外部类的类名.this Toast.makeText(MainActivity.this,str+"click",Toast.LENGTH_LONG).show(); } } }
2.匿名内部类
java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); Button bt_reset = (Button)findViewById(R.id.reset); //第二种 匿名内部类 bt_reset.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); //在内部类里调用外部类的实例:外部类的类名.this Toast.makeText(MainActivity.this,str+"click",Toast.LENGTH_LONG).show(); } }); }
3.外部类
java
public class MainActivity extends AppCompatActivity { //public class MainActivity extends AppCompatActivity implements View.OnClickListener { //bt_reset.setOnClickListener(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); //添加监听器 //监听器 本身是一个接口,需要写实现类 Button bt_reset = (Button)findViewById(R.id.reset); //第三种 外部类 //bt_reset.setOnClickListener(new WaibuListener()); } }
java2
package com.example.chenshuai.test322; import android.view.View; import android.widget.Button; /** * Created by chenshuai on 2016/3/26. */ public class WaibuListener implements View.OnClickListener { public void onClick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); } }
4.直接绑到标签上
xml
<Button android:hint="send" android:layout_columnWeight="1" android:onClick="onclick"/>
java
public class MainActivity extends AppCompatActivity { //public class MainActivity extends AppCompatActivity implements View.OnClickListener { //bt_reset.setOnClickListener(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); //添加监听器 //监听器 本身是一个接口,需要写实现类 Button bt_reset = (Button)findViewById(R.id.reset); //传递的View参数 是触发这个事件视图实例(在这里是Button) public void onclick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); Toast.makeText(this,str+"Button click",Toast.LENGTH_LONG).show(); } }
5.Avtivity直接实现
java
public class MainActivity extends AppCompatActivity implements View.OnClickListener { bt_reset.setOnClickListener(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); //添加监听器 //监听器 本身是一个接口,需要写实现类 Button bt_reset = (Button)findViewById(R.id.reset);
}
}