1、第一种监听事件 的方式(匿名类方式,或叫内部类方式)
项目/src 下的MainActivity.java 活动文件
package com.t20.helloworld; import android.os.Bundle; import android.R.string; import android.app.Activity; import android.text.TextUtils; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private Button btn; private EditText et; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //点击按键 btn=(Button) findViewById(R.id.button1); //文本框 et=(EditText) findViewById(R.id.editText1); //文本视图 tv=(TextView) findViewById(R.id.textView1); //第一种监听事件 的方式(匿名类方式,或叫内部类方式) btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Log.i("事件", "按键被点击了"); String content=et.getText().toString(); //非空验证 if(TextUtils.isEmpty(content)){ //用Toast(吐司)给用户提示 Toast.makeText(MainActivity.this, "请输入内容", Toast.LENGTH_SHORT).show(); //----------------在当前类里---------提示信息----------------显示的时间 //不知道在哪个类里,可以用getApplicationContext(),但效率比较低,要自动检索。 //Toast.makeText(getApplicationContext(), R.string.pleaseInput, Toast.LENGTH_SHORT).show(); return; } tv.setText(content); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
2、第二种监听事件的方式(活动实现事件接口,按扭多的话,建议用第二种方式)
项目/src 下的MainActivity.java 活动文件
package com.t20.helloworld; import android.os.Bundle; import android.R.integer; import android.R.string; import android.app.Activity; import android.text.TextUtils; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button btn; private EditText et; private TextView tv; private ProgressBar pb; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //点击按键 btn=(Button) findViewById(R.id.button1); //文本框 et=(EditText) findViewById(R.id.editText1); //文本视图 tv=(TextView) findViewById(R.id.textView1); //进度条 pb=(ProgressBar) findViewById(R.id.progressBar1); //图片 iv=(ImageView) findViewById(R.id.imageView1); //第二种监听事件的方式(活动实现事件接口,按扭多的话,建议用第二种方式) //设置监听 btn.setOnClickListener(this); iv.setOnClickListener(this); //设置进度条最大值 pb.setMax(100); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub //使用switch进行事件分发(通过控件id来区分) switch (v.getId()) { //1、点击按钮 case R.id.button1: Log.i("事件", "按键被点击了"); String content=et.getText().toString(); //非空验证 if(TextUtils.isEmpty(content)){ //用Toast(吐司)给用户提示 Toast.makeText(MainActivity.this, "请输入内容", Toast.LENGTH_SHORT).show(); //----------------在当前类里---------提示信息----------------显示的时间 //不知道在哪个类里,可以用getApplicationContext(),但效率比较低,要自动检索。 //Toast.makeText(getApplicationContext(), R.string.pleaseInput, Toast.LENGTH_SHORT).show(); return; } tv.setText(content); break; //2、点击图片 case R.id.imageView1: //点击图片,进度条会增加 int progress=pb.getProgress(); progress+=10; pb.setProgress(progress); break; default: break; } } }
3、第三种监听事件 的方式(在布局里添加onclick并且实现对应方法)
项目/res/layout 下的activity_main.xml文件
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText1" android:layout_centerHorizontal="true" android:layout_marginTop="38dp" android:text="点击" android:onClick="btnContent"/> //起的这个btnContent名称,对应MainActivity.java中的方法名
项目/src 下的MainActivity.java 活动文件
package com.t20.helloworld; import android.os.Bundle; import android.R.string; import android.app.Activity; import android.text.TextUtils; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private Button btn; private EditText et; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //点击按键 btn=(Button) findViewById(R.id.button1); //文本框 et=(EditText) findViewById(R.id.editText1); //文本视图 tv=(TextView) findViewById(R.id.textView1); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } //第三种监听事件 的方式(在布局里添加onclick并且实现对应方法) public void btnContent(View v){ Log.i("事件", "按键被点击了"); String content=et.getText().toString(); //非空验证 if(TextUtils.isEmpty(content)){ //用Toast(吐司)给用户提示 Toast.makeText(MainActivity.this, "请输入内容", Toast.LENGTH_SHORT).show(); //----------------在当前类里---------提示信息----------------显示的时间 //不知道在哪个类里,可以用getApplicationContext(),但效率比较低,要自动检索。 //Toast.makeText(getApplicationContext(), R.string.pleaseInput, Toast.LENGTH_SHORT).show(); return; } tv.setText(content); } }