Android监听事件的方式(第1课)

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);
    }
    
}

猜你喜欢

转载自blog.csdn.net/qq15577969/article/details/80589946