标签:you listener location 效果 href protect 选择 super cto
2020-03-04 23:02:18
Button控件点击方式比较多,本文简单介绍以下六种:
③在当前Activity中实现OnClickListener接口
布局文件【button1.xml】
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!--按钮点击事件的实现--> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="click" android:text="按钮1" /> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/button" android:text="按钮2" /> </RelativeLayout>
①②MainActivity.java文件【方式一、方式二】
public class MainActivity extends AppCompatActivity { //按钮点击事件【方法1和方法2的验证】 //按钮1是在布局中指定onClick属性的方式实现点击事件 //按钮2是通过匿名内部类的方式来实现点击事件 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); //方法二:匿名内部类方法实现按钮2的点击事件 myBtn_two.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { myBtn_two.setText("按钮2已被点击"); } }); } //方法一:通过实现onClick()方法,实现按钮1的点击事件 public void click(View v){ myBtn_one.setText("按钮1已被点击"); } }
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ //实现OnClickListener接口 //按钮点击事件【方法3的验证】 //方法三:在当前Activity中实现OnClickListener接口 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); //this代表OnClickListener的引用 myBtn_one.setOnClickListener(this); myBtn_two.setOnClickListener(this); } //父类View.OnClickListener【接口】是public,子类实现接口必须是public,权限不能低于父类 @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: myBtn_one.setText("按钮1已被点击"); break; case R.id.button2: myBtn_two.setText("按钮2已被点击"); break; } } }
public class MainActivity extends AppCompatActivity{ //按钮点击事件【方法4的验证】 //方法四:创建内部类 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); //引用实现OnClickListener接口内部类对象 myBtn_one.setOnClickListener(new Mybutton()); myBtn_two.setOnClickListener(new Mybutton()); } public class Mybutton implements View.OnClickListener{ //实现OnClickListener接口 @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: myBtn_one.setText("按钮1已被点击"); break; case R.id.button2: myBtn_two.setText("按钮2已被点击"); break; } } } }
public class MainActivity extends AppCompatActivity{ //按钮点击事件【方法5的验证】 //方法五:创建外部类 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); //引用实现OnClickListener接口外部类对象 myBtn_one.setOnClickListener(new Mybutton(){ @Override public void onClick(View v) { super.onClick(v); myBtn_one.setText("按钮1已被点击"); } }); myBtn_two.setOnClickListener(new Mybutton(){ @Override public void onClick(View v) { super.onClick(v); myBtn_two.setText("按钮2已被点击"); } }); } } class Mybutton implements View.OnClickListener{ //实现OnClickListener接口 @Override public void onClick(View v) { } }
在使用Lambda表达式之前需要进行配置【两步】:
第一步:在“Project Structure”中加入“JDK Location”【如下图所示】
如果JDK选择的不是JDK8可能出现“请选择一个有效的 jdk 8目录(Please choose a valid JDK 8 directory)”的信息,不行的话就去官网下JDK8。
第二步:设置“sourceCompatibility”和“targetCompatibility”为1.8
public class MainActivity extends AppCompatActivity{ //按钮点击事件【方法6的验证】 //方法六:Lambda表达式 //① 修改build.gradle文件,【enable jack已经过时,不可设置】,设置sourceCompatibility,targetCompatibility为jdk1.8 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); myBtn_one.setOnClickListener(view->myBtn_one.setText("按钮1已被点击")); myBtn_two.setOnClickListener(view->myBtn_two.setText("按钮2已被点击")); } }
运行效果:
2020-03-04 23:57:50
标签:you listener location 效果 href protect 选择 super cto
原文地址:https://www.cnblogs.com/ZQXAYQX-1710545089/p/12417109.html