您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
08_点击事件的几种写法
发布时间:2021-02-01 15:18:33编辑:雪饮阅读()
换行小技巧
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="click me"
/>
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
public static final String tag="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button) this.findViewById(R.id.clickMe);
//直接new当前类中的内部类,代替原来的匿名内部类实例做为setOnClickListener的参数为按钮设置点击事件监听
button.setOnClickListener(new MyButtonClickListener());
}
//在当前类中建立内部类实现onclick事件的实现
private class MyButtonClickListener implements View.OnClickListener {
//在某一个view对象,被点击的时候调用的回调方法
@Override
public void onClick(View view) {
System.out.println("按钮被点击了");
Log.i(tag,"button 被点击了");
}
}
}
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
public static final String tag="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button) this.findViewById(R.id.clickMe);
//直接new当前类中的内部类,代替原来的匿名内部类实例做为setOnClickListener的参数为按钮设置点击事件监听
button.setOnClickListener(new MyButtonClickListener());
}
//在当前类中建立内部类实现onclick事件的实现
private class MyButtonClickListener implements View.OnClickListener {
//在某一个view对象,被点击的时候调用的回调方法
@Override
public void onClick(View view) {
//获取输入框内容
EditText mEditText=(EditText) MainActivity.this.findViewById(R.id.et_number);
String number=mEditText.getText().toString();
//记录日志
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss ");
Date curDate = new Date(System.currentTimeMillis());//获取当前时间
String time = formatter.format(curDate);
Log.i(tag,number);
//打电话
Intent intent=new Intent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
}
String number=mEditText.getText().toString();
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
public static final String tag="MainActivity";
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button) this.findViewById(R.id.clickMe);
//直接在布局初始化之后就获取输入框的引用
mEditText=(EditText) MainActivity.this.findViewById(R.id.et_number);
button.setOnClickListener(new MyButtonClickListener());
}
//在当前类中建立内部类实现onclick事件的实现
private class MyButtonClickListener implements View.OnClickListener {
//在某一个view对象,被点击的时候调用的回调方法
@Override
public void onClick(View view) {
//然后每次点击的时候直接通过引用获取输入框内容
String number=mEditText.getText().toString();
//记录日志
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss ");
Date curDate = new Date(System.currentTimeMillis());//获取当前时间
String time = formatter.format(curDate);
Log.i(tag,number);
//打电话
Intent intent=new Intent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
}
package com.example.myapplication; <Button package com.example.myapplication; <TextView这种方式也就是上上篇错误的认为不可行的方式,其实只是要额外implements下OnClickListener接口,并在当前类将onClick方法实现,然后按钮设置监听的时候就只传一个this即可,那么具体实现如:
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public static final String tag="MainActivity";
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button) this.findViewById(R.id.clickMe);
//直接在布局初始化之后就获取输入框的引用
mEditText=(EditText) MainActivity.this.findViewById(R.id.et_number);
button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
//然后每次点击的时候直接通过引用获取输入框内容
String number=mEditText.getText().toString();
//记录日志
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss ");
Date curDate = new Date(System.currentTimeMillis());//获取当前时间
String time = formatter.format(curDate);
Log.i(tag,number);
//打电话
Intent intent=new Intent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
事件的监听实现也可以像是JavaScript与html的一样,直接绑定到元素中,如
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="click me"
android:id="@+id/clickMe"
android:onClick="dail"
/>
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity{
public static final String tag="MainActivity";
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText=(EditText) MainActivity.this.findViewById(R.id.et_number);
}
public void dail(View view) {
//然后每次点击的时候直接通过引用获取输入框内容
String number=mEditText.getText().toString();
//记录日志
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss ");
Date curDate = new Date(System.currentTimeMillis());//获取当前时间
String time = formatter.format(curDate);
Log.i(tag,number);
//打电话
Intent intent=new Intent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
文本组件也可以直接绑定
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:clickable="true"
android:onClick="dail"
/>这里有说clickable=true这个设定在文本组件绑定的时候一定要加,但是我测试(模拟器测试,安卓9)没有加的时候也可以正常运行,可能是真机或者某些版本会有这个问题吧。
关键字词:android,点击事件