监听按钮点击事件然后发送到主activity
Listen button click event then send to main activity
我有一个片段,我正在监听按钮点击 event.I 我正在使用此代码:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (usernameL.getText().toString().equals("") == false && passwordL.getText().toString().equals("") == false) {
final String usernameVal=usernameL.getText().toString();
final String passwordVal=passwordL.getText().toString();
((MainActivity)getActivity()).login(usernameVal,passwordVal);
}
}
});
这是一个好方法吗?如果错了应该怎么办?
您的代码可以工作,但这不是最好的方法。它的问题在于它将您的片段绑定到 MainActivity——理想情况下片段不应该知道 activity 启动它的是什么。更好的解决方案是使用回调接口。让你的片段定义一个接口:
public interface LoginCallback{
onLoginPressed(String user, String pword);
}
然后在片段 setLoginCallback(LoginCallback) 中有一个函数,它设置 LoginCallback 的一个实例。当用户按下按钮时,在该实例上调用 onLoginPressed。
您的 Activity 将创建一个 LoginCallback 类型的对象,或者将自己实现接口。
这样做的好处是 Fragment 不需要知道关于 Activity 的任何信息 - 它是自包含的。缺点是在 activity.
中设置片段(您需要设置登录回调)需要更多工作
我有一个片段,我正在监听按钮点击 event.I 我正在使用此代码:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (usernameL.getText().toString().equals("") == false && passwordL.getText().toString().equals("") == false) {
final String usernameVal=usernameL.getText().toString();
final String passwordVal=passwordL.getText().toString();
((MainActivity)getActivity()).login(usernameVal,passwordVal);
}
}
});
这是一个好方法吗?如果错了应该怎么办?
您的代码可以工作,但这不是最好的方法。它的问题在于它将您的片段绑定到 MainActivity——理想情况下片段不应该知道 activity 启动它的是什么。更好的解决方案是使用回调接口。让你的片段定义一个接口:
public interface LoginCallback{
onLoginPressed(String user, String pword);
}
然后在片段 setLoginCallback(LoginCallback) 中有一个函数,它设置 LoginCallback 的一个实例。当用户按下按钮时,在该实例上调用 onLoginPressed。
您的 Activity 将创建一个 LoginCallback 类型的对象,或者将自己实现接口。
这样做的好处是 Fragment 不需要知道关于 Activity 的任何信息 - 它是自包含的。缺点是在 activity.
中设置片段(您需要设置登录回调)需要更多工作