Android打开界面时判断是否登录,未登录跳转登录界面,登录完成后直接跳转要打开的界面

来源:互联网 发布:学建筑学不下去知乎 编辑:程序博客网 时间:2024/06/08 00:26

跳转时调用的方法。
实现思路是未登录的话创建一个跳转到登录界面的ComponentName,替换掉Intent中原来的ComponentName,把要跳转的目标className取出来传递到登录界面。注意,这里只能替换Intent内的ComponentName,而不能重新创建一个新的Intent,因为运来的Intent可能是有需要传递的数据的,重新创建的话原来Intent内的数据会丢失。

 public void startActivityAfterLogin(Intent intent) {        //未登录(这里用自己的登录逻辑去判断是否未登录)        if (!UserManager.getInstance().isLogin()) {            ComponentName componentName = new ComponentName(getContext(), LoginActivity.class);            intent.putExtra("className", intent.getComponent().getClassName());            intent.setComponent(componentName);            super.startActivity(intent);        } else {            super.startActivity(intent);        } }

登录界面的方法。
登录成功后调用此方法,用Class.forName将传过来的className转换成Class,跟上个跳转同理,不能创建新的Intent而是要用原来的Intent保证数据正确传递。

private void startActivity() {        if (getIntent().getExtras() != null && getIntent().getExtras().getString("className") != null) {            String className = getIntent().getExtras().getString("className");            getIntent().removeExtra("className");            if (className != null && !className.equals(getContext().getClass().getName())) {                try {                    ComponentName componentName = new ComponentName(getContext(), Class.forName(className));                    startActivity(getIntent().setComponent(componentName));                } catch (ClassNotFoundException e) {                    e.printStackTrace();                }            }        }        finish();    }
原创粉丝点击