技巧: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 {
// 创建button对象:
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());
}

// 定义Click内部类:
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 {
// 创建button对象:
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{
// 创建button对象:
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();
}
}

参考