监听按钮单击事件然后发送到主要活动

时间:2015-01-02 22:34:03

标签: android

我有一个片段,我正在收听按钮点击事件。我正在使用此代码:

           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);
                   }
               } 
           }); 

这是一个好方法吗?如果是错的,应该怎么做?

1 个答案:

答案 0 :(得分:1)

您的代码可以使用,但这不是最好的方法。它的问题在于它将您的片段与MainActivity联系起来 - 理想情况下,片段不应该知道启动它的活动。更好的解决方案是使用回调接口。让你的片段定义一个接口:

public interface LoginCallback{
    onLoginPressed(String user, String pword);
}

然后在片段setLoginCallback(LoginCallback)中有一个函数,它设置一个LoginCallback实例。当用户按下按钮时,在该实例上调用onLoginPressed。

您的Activity将创建一个LoginCallback类型的对象,或者将实现该接口本身。

这样做的好处是片段不需要知道有关活动的任何信息 - 它自包含。缺点是在活动中设置片段(您需要设置登录回调)需要做更多的工作。