学习目标:掌握Button、Log、Toast、EditText的几种常见使用方式 方式一:直接在布局文件当中添加
<?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 { static { System.loadLibrary("myapplication" ); } private ActivityMainBinding binding; @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); } public native String stringFromJNI () ; public void test (View view) { Log.d("hyq" , "按钮被点击了" ); } }
方式二:使用匿名类
public class MainActivity extends AppCompatActivity { 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" , "按钮被点击了" ); } }); } 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 { 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 ()); } 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{ 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 ); } 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; 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); } 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
代表对象引用不指向任何实际的对象。要是 username
为 null
,那么调用 username.length()
方法时就会抛出 NullPointerException
异常。所以,先检查 username
是否为 null
是为了避免出现这种异常。
2. username.length() != 0
该条件用于检查 username
字符串的长度是否为 0。即使 username
不是 null
,它也可能是一个空字符串(例如 ""
)。当字符串为空时,其长度为 0。这个条件可以确保输入的字符串不为空。