众所周知,我们在android开发中为Button实现触发事件有两种基本的实现。一种为接口匿名类实现,这种方法直接方便但是会造成代码的冗余;还有一种方法是直接类型与new一个接口对象,在里面实现方法。如下:
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
private Button btlogin=null;
private Button btassert=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btlogin=(Button)findViewById(R.id.btLogin);
btassert=(Button)findViewById(R.id.btAsset);
btlogin.setOnClickListener(listener);
btassert.setOnClickListener(listener);
}
private OnClickListener listener = new View.OnClickListener(){
@Override
public void onClick(View view) {
Button button=(Button)view;
switch (button.getId()) {
case R.id.btLogin:
Toast.makeText(MainActivity.this, "您登陆了", Toast.LENGTH_LONG).show();
break;
case R.id.btAsset:
Toast.makeText(MainActivity.this, "重置OK" , Toast.LENGTH_SHORT).show();
break;
}
}
};
在原来的SDK下,private OnClickListener listener=new OnClickListener(){.......};便可以利用这种方法。但是新的SDK这样写会报编译错误。
开始的时候我以为是导入类错误,因为有两个OnClickListener:android.content.DialogInterface.OnClickListener和import android.view.View.OnClickListener;
恩,就是这样,还是老问题,注意导入包的正确性,我们需要import android.view.View.OnClickListener;