学习目标:掌握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。这个条件可以确保输入的字符串不为空。