首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android ()重新创建活动

Android ()重新创建活动
EN

Stack Overflow用户
提问于 2013-08-14 15:09:31
回答 1查看 1.5K关注 0票数 4

如果我试图完成活动,奇怪的事情就会发生。在第一次调用activity方法-之后。

代码语言:javascript
复制
BroadcastReceiver requestReceiver = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {
                long resultRequestId = intent.getLongExtra(DVSServiceHelper.EXTRA_REQUEST_ID, 0);

                if(BuildConfig.DEBUG) Log.d(TAG, "received request id: "+ resultRequestId +", current request id: "+ requestId);

                if (resultRequestId == requestId) {
                    int resultCode = intent.getIntExtra(DVSServiceHelper.EXTRA_RESULT_CODE, 0);

                    Logger.debug(TAG, "result code: "+ resultCode);

                    switch(resultCode) {
                        case HttpsURLConnection.HTTP_OK:
                            //Dummy intent
                            Intent in = new Intent();

                            Logger.debug(TAG, "HTTP OK");

                            //User logged in successfuly. Finish Login activity
                            LoginActivity.this.setResult(AuthorizationManager.LOGIN_SUCCESS, in);
                            Logger.debug(TAG, "setting result...");
                            LoginActivity.this.finish();
                            Logger.debug(TAG, "finishing...");

                            break;
                            ...

活动onCreate方法:

代码语言:javascript
复制
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_activity);

        Logger.debug(TAG, "[onCreate]");
        ...

LogCat输出

第一次尝试:

代码语言:javascript
复制
08-14 17:46:00.917: D/(7975): [LoginActivity]        result code: 200
08-14 17:46:00.917: D/(7975): [LoginActivity]        HTTP OK
08-14 17:46:00.917: D/(7975): [LoginActivity]        setting result...
08-14 17:46:00.937: D/(7975): [LoginActivity]        finishing...
08-14 17:46:00.977: D/(7975): [LoginActivity]        [onCreate]

在几秒钟内尝试:

代码语言:javascript
复制
08-14 17:50:25.437: D/(7975): [LoginActivity]        result code: 200
08-14 17:50:25.437: D/(7975): [LoginActivity]        HTTP OK
08-14 17:50:25.437: D/(7975): [LoginActivity]        setting result...
08-14 17:50:25.537: D/(7975): [LoginActivity]        finishing...
08-14 17:50:25.567: D/(7975): [MainActivity]         [onActivityResult]
08-14 17:50:25.567: D/(7975): [MainActivity]         [onActivityResult]
08-14 17:50:25.567: D/(7975): [MainActivity]         [onResume]

编辑的

MainActivty

代码语言:javascript
复制
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Logger.debug(TAG, "[onActivityResult]");

        if(AuthorizationManager.REQUEST_LOGIN == requestCode) {
            if(AuthorizationManager.LOGIN_FAILED == resultCode) {

                Logger.debug(TAG, "Login failed!");

                Intent login = new Intent(DVSApplication.getContext(), LoginActivity.class);
                startActivityForResult(login, AuthorizationManager.REQUEST_LOGIN);
            }
        }
    }



protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Logger.debug(TAG, "[onCreate]");

        //if user isn't saved crediantials - show log in activity
        if(!AuthorizationManager.getManager(getApplicationContext()).isLoggedIn()) {

            Logger.debug(TAG, "[onCreate] user is not logged in!");

            Intent login = new Intent(DVSApplication.getContext(), LoginActivity.class);
            startActivityForResult(login, AuthorizationManager.REQUEST_LOGIN);
        }
        ...
}

protected void onResume() {
        super.onResume();

        Logger.debug(TAG, "[onResume]");

        //if user isn't saved crediantials - show log in activity
        if(!AuthorizationManager.getManager(getApplicationContext()).isLoggedIn()) {

            Logger.debug(TAG, "[onResume] User is not logged in!");

            Intent login = new Intent(DVSApplication.getContext(), LoginActivity.class);
            startActivityForResult(login, AuthorizationManager.REQUEST_LOGIN);
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-14 15:42:38

从主活动的startActivityForResult(login, AuthorizationManager.REQUEST_LOGIN);中删除onresume()。这样做,你将能够回到主要的活动。此外,如果您不想在活动完成后返回到活动中,您也应该从onActivityResult中删除它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18235459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档