技巧:java后端四种添加OnClick的方式
概述
以“AndroidStudio-02第一个项目HelloWorld”中的例子为例介绍四种添加OnClick动作的方式。
四种方法
<1> 内部类方法:直接定义一个新类ClickLogIn继承OnClickListener,改写其中的onClick方法。使用时将实例化的ClickLogIn对象绑定在对应的前端button元素上。
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class MainActivity extends AppCompatActivity { private Button btn_login;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
btn_login = findViewById(R.id.btn_login); btn_login.setOnClickListener(new ClickLogIn()); }
class ClickLogIn implements View.OnClickListener{ @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "正在登录……", Toast.LENGTH_SHORT).show(); } } }
|
<2> 匿名类方法:其实是内部类方法的一种简化实现方式,当内部类只需要一个实例化对象时,通常使用匿名类直接定义+创建单个对象。
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class MainActivity extends AppCompatActivity { private Button btn_login;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
btn_login = findViewById(R.id.btn_login); btn_login.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "正在登录……", Toast.LENGTH_SHORT).show(); } }); }
}
|
<3> 主类设置OnClick方法:直接将主类MainActivity继承OnClickListener,并且改写onClick方法,将所有的button绑定在主类对象this上(需要同一个onClick()函数处理所有的button逻辑)。
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button btn_login;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
btn_login = findViewById(R.id.btn_login); btn_login.setOnClickListener(this); }
@Override public void onClick(View v) { Toast.makeText(MainActivity.this, "正在登录……", Toast.LENGTH_SHORT).show(); } }
|
<4> 前端元素属性直接回调法:前端元素设置onClick属性,直接回调后端函数,是最简单的一种方式,非常类似于MATLAB GUIDE界面开发的前端逻辑。
activity_main.xml 中给button添加onClick
属性,直接绑定后端动作myOnClick()函数:
1 2 3 4 5 6
| <Button android:id="@+id/btn_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="myOnClick" android:text="登录"></Button>
|
MainActivity.java 中直接定义myOnClick()函数,无需继承Listener,无需创建前端元素对象。
1 2 3 4 5 6 7 8 9 10 11 12
| public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
public void myOnClick(View v) { Toast.makeText(MainActivity.this, "正在登录……", Toast.LENGTH_SHORT).show(); } }
|
参考