• 一步一步学android之事件篇——单击事件


    在使用软件的时候单击事件必不可少,比如我想确定、取消等都需要用户的单击,所有的单击事件都是由View.OnClickListener接口来进行处理的,接口定义如下:

    public static interface View.OnClickListener{
    		public void onClick(View v) {
    		
    		}
    	}


    下面同样写个例子来看下如何监听单击事件:

    运行效果:


    单击前的效果




    单击后的效果

    main.xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <EditText
            android:id="@+id/info"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入信息...">
        </EditText>
    
        <Button
            android:id="@+id/bt_show"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="显示EditText里面的内容到下面的TextView中" />
    
        <TextView
            android:id="@+id/tv_show"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="我是用来显示EditText内容的TextView,点击上面的按钮我就能显示" />
    
    </LinearLayout>
    

    MainActivity.java:

    package com.example.clickdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    	//定义三个用到的组件
    	private Button bt_show;
    	private EditText info;
    	private TextView tv_show;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		initView();
    	}
    	//单独写个方法初始化组件
    	private void initView(){
    		//从xml中获取Button,xml中id的作用
    		bt_show = (Button)super.findViewById(R.id.bt_show);
    		//从xml中获取EditText
    		tv_show = (TextView)super.findViewById(R.id.tv_show);
    		//从xml中获取TextView
    		info = (EditText)super.findViewById(R.id.info);
    		
    		//为Button按钮添加单击事件
    		bt_show.setOnClickListener(new MyClickListener());
    	}
    	//定义监听处理程序
    	private class MyClickListener implements OnClickListener{
    
    		public void onClick(View v) {
    			// TODO Auto-generated method stub
    			//首先获取EditText中的内容
    			String temp = info.getText().toString();
    			//再把内容设置到TextView中
    			tv_show.setText(temp);
    		}
    		
    	}
    	
    }
    


    第一次 使用findViewById()方法,说明一下这个方法的作用是取得在xml中的组件,如果没取组件就用会报空指针异常,然后是使用setOnClickListener()方法来为对按钮监听,这里是定义了一个内部类来实现OnClickListener接口,然后在OnClick方法中实现自己的逻辑(单击后要做的事情)。


    上面的代码还可以修改为不使用内部类,毕竟我们只用一次,所以改成下面的使用匿名内部类的方法:

    MainActivity.java:

    package com.example.clickdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    	//定义三个用到的组件
    	private Button bt_show;
    	private EditText info;
    	private TextView tv_show;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		initView();
    	}
    	//单独写个方法初始化组件
    	private void initView(){
    		//从xml中获取Button,xml中id的作用
    		bt_show = (Button)super.findViewById(R.id.bt_show);
    		//从xml中获取EditText
    		tv_show = (TextView)super.findViewById(R.id.tv_show);
    		//从xml中获取TextView
    		info = (EditText)super.findViewById(R.id.info);
    		
    		//为Button按钮添加单击事件
    		bt_show.setOnClickListener(new OnClickListener() {
    			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				//首先获取EditText中的内容
    				String temp = info.getText().toString();
    				//再把内容设置到TextView中
    				tv_show.setText(temp);
    			}
    		});
    	}
    }
    


    效果是一样的,今天就说到这里了。

  • 相关阅读:
    Windows 文件过滤驱动经验总结
    修改disk驱动监控文件系统的IO特征
    STATUS_MUTANT_NOT_OWNED
    网络连接存储(Networkattached storage,NAS)简介
    缓存管理器
    LINUX softraid 管理
    过滤驱动的问题自我总结
    Visual Studio 2010 (vs2010) 全屏功能的改进
    在 .NET 中,后++ 运算符产生的一个小问题
    在 Visual Studio 2008 中去掉某些文件的只读属性
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3275726.html
Copyright © 2020-2023  润新知