监听按钮点击事件然后发送到主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.

中设置片段(您需要设置登录回调)需要更多工作