学习目标:掌握Button、Log、Toast、EditText的几种常见使用方式

Button

方式一:直接在布局文件当中添加

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="test"
android:text="Button"
tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.example.myapplication.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {

// Used to load the 'myapplication' library on application startup.
static {
System.loadLibrary("myapplication");
}

private ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

}

/**
* A native method that is implemented by the 'myapplication' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();

public void test(View view) {
Log.d("hyq", "按钮被点击了");
}
}

方式二:使用匿名类

public class MainActivity extends AppCompatActivity {

// Used to load the 'myapplication' library on application startup.
static {
System.loadLibrary("myapplication");
}

private ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("hyq", "按钮被点击了");
}
});

}

/**
* A native method that is implemented by the 'myapplication' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
}

方法三:使用自定义类

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.example.myapplication.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {

// Used to load the 'myapplication' library on application startup.
static {
System.loadLibrary("myapplication");
}

private ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Button button = findViewById(R.id.button);
button.setOnClickListener(new MyClass());
}

/**
* A native method that is implemented by the 'myapplication' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
}
class MyClass implements View.OnClickListener{

@Override
public void onClick(View view) {
Log.d("hyq", "按钮被点击了");
}
}

方式四:MainActivity实现接口

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.example.myapplication.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

// Used to load the 'myapplication' library on application startup.
static {
System.loadLibrary("myapplication");
}

private ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Button button = findViewById(R.id.button);
//几种绑定方式
button.setOnClickListener(new MainActivity());
button.setOnClickListener(MainActivity.this);
button.setOnClickListener(this);

}

/**
* A native method that is implemented by the 'myapplication' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();

@Override
public void onClick(View view) {
Log.d("hyq", "按钮被点击了");
}
}

假如界面上有很多个button便可以使用这种定义方式来减少重复代码

Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
Button button4 = findViewById(R.id.button4);
Button button5 = findViewById(R.id.button5);
public void onClick(View view) {
switch(view.getId()){
case R.id.button1:
Log.d("hyq", "按钮被点击了");
break;
}
Log.d("hyq", "其他情况");
}

Toast

Toast.makeText(MainActivity.this, "hyq", Toast.LENGHT.LENGHT_LONG);

EditText

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<Button
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="test"
android:text="Button"
tools:ignore="MissingConstraints" />
<EditText
android:id="@+id/edittext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
/>
</LinearLayout>
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.example.myapplication.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

EditText editText;

// Used to load the 'myapplication' library on application startup.
static {
System.loadLibrary("myapplication");
}

private ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Button button = findViewById(R.id.button);
button.setOnClickListener(this);
editText = findViewById(R.id.edittext);

}

/**
* A native method that is implemented by the 'myapplication' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();

@Override
public void onClick(View view) {
String username = editText.getText().toString().trim();
Log.d("hyq", "按钮被点击了" + username);
}
}

1. username!= null

此条件用于检查 username 这个字符串对象是否为 null。在 Java 中,null 代表对象引用不指向任何实际的对象。要是 usernamenull,那么调用 username.length() 方法时就会抛出 NullPointerException 异常。所以,先检查 username 是否为 null 是为了避免出现这种异常。

2. username.length() != 0

该条件用于检查 username 字符串的长度是否为 0。即使 username 不是 null,它也可能是一个空字符串(例如 "")。当字符串为空时,其长度为 0。这个条件可以确保输入的字符串不为空。