从创建的库获取响应

时间:2014-08-28 06:53:43

标签: android android-library

我的目标是创建一个可重用的库,如果我要创建新项目,我可以包含它。例如登录

我将分别创建登录项目,进行设计和编码。现在,如果我将在我的一个项目中使用它,我将只需将其包含为依赖。到目前为止,这是有效的,登录显示在我的新项目中。

我遇到的

挑战是如何处理或获取登录结果对我的应用程序的响应。由于它们是独立的项目,

最佳策略是什么?或者有更好的方法来创建可重用的库。

由于

1 个答案:

答案 0 :(得分:1)

ActivityFragment之间的交互(已加载到Activity上)非常容易。您可以向Fragment添加公共方法,然后在Activity方法中调用它。否则,如果您的登录过程是异步任务(即将在后台线程中完成),您可能需要一个接口来通知父Activity登录过程已完成。

这里有一些入门的代码片段。

public LoginFrag extends Fragment {
    // Other stuff        

    /* This is your own method which checks user credentials */
    public void check() {
        boolean success = false;

        // codes for checking username and password
        // and then update 'success' variable

        // with this code you'll inform the parent activity
        if(mListener != null) {
            mListener.onResult(success);
        }
    }

    OnLoginResultListener mListener;        

    public void setOnLoginResultListener(OnLoginResultListener listener) {
        mListener = listener;
    }        

    public interface OnLoginResultListener {
        public void onResult(boolean success);
    }
}

这是父活动代码:

public MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle b) {
        //Other stuff
        LoginFrag login = new LoginFrag(); // from the library
        login.setOnLoginResultListener(new OnLoginResultListener(){

            @Override
            public void onResult(boolean success) {
                // do stuff here with 'success' for example:
                String message;
                if(success) {
                    message = "Congratulation! you've logged in";
                } else {
                    message = "Ooops! login failed!";
                }
                console.log(message);
            }
        });

        // Now load this fragment by 'FragmentManager'
        // via 'getSupportFragmentManager()'
    }
}