Android事件處理(有例子)
事件綁定有好幾種方法
第一種:
在xml文件中指定onClick的方法名,然後在對應的java中實現該方法
.xml
android:onClick="click"
.java
public void click(View V){
//你的操作
textview.setText(edittext.getText());
}
第二種:
在xml文件中給指定一個id,然後在對應的java文件中通過id獲取該元素,再綁定一個事件
.xml
android:id="@+id/btn"
.java
Button button = (Button)findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textview.setText(edittext.getText());
}
})
第三種:
在xml文件中給指定一個id,然後在對應的java文件要繼承OnClickListener 類,再實現它的方法即可。
.xml
android:id="@+id/btn"
.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//定義一個button作爲成員變量
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取頁面的button將其賦值到成員變量中
button = (Button)findViewById(R.id.btn);
//將事件綁定到button上
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
textview.setText(edittext.getText());
}
}
三種方法各有優勢。
下面給一個例子
代碼:
.java
package com.example.layouttest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//定義一個TextView作爲成員變量
private TextView textview;
//定義一個EditText作爲成員變量
private EditText edittext;
//定義一個button作爲成員變量
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取頁面的TextView將其賦值到成員變量中
textview = (TextView)findViewById(R.id.tv);
//獲取頁面的EditText將其賦值到成員變量中
edittext = (EditText)findViewById(R.id.et);
//獲取頁面的button將其賦值到成員變量中
button = (Button)findViewById(R.id.btn);
//將事件綁定到button上
button.setOnClickListener(this);
/* //爲按鈕設置監聽器,並用匿名類實現(第二種方法)
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textview.setText(edittext.getText());
}
});*/
}
//第三種方法
@Override
public void onClick(View v) {
textview.setText(edittext.getText());
}
/*
//第一種方法
//將頁面EditText中的輸入的text賦值到TextView上
public void click(View V){
textview.setText(edittext.getText());
}*/
}
.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="30dp"
>
</TextView>
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</EditText>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="確定"
android:layout_gravity="center"
android:onClick="click"
>
</Button>
</LinearLayout>
運行截圖: