未登錄跳轉(zhuǎn)登錄頁 登錄后跳轉(zhuǎn)原來頁

前言

在大多數(shù)APP中可能會(huì)碰到這樣一個(gè)需求,用戶點(diǎn)擊下一步、下一步后有一個(gè)頁面需要登錄才能查看,在輸入賬號(hào)和密碼,登錄上去后需要再次跳轉(zhuǎn)到原來的頁面。在之前小冷想了很多方法也實(shí)現(xiàn)了但是比較繁瑣,直到看到CSDN一篇簡(jiǎn)短的文章覺得非常好,小冷在此記錄一下。需要粘貼部分代碼的點(diǎn)我查看原文

登錄跳轉(zhuǎn)流程

從A界面跳轉(zhuǎn)到B界面,判斷是否需要登錄,需要登錄時(shí),記錄下B界面的全類名,通過intent傳遞給LoginActivity,不需要登錄直接跳轉(zhuǎn)到B界面。等登錄成功后檢查獲取到的intent中的全類名,通過反射跳轉(zhuǎn)到之前記錄的B界面。


登錄跳轉(zhuǎn)流程

代碼示例

A跳轉(zhuǎn)B(在界面A中寫)

Intent intent= new Intent(this,NextActivty.class);
intent.putString("key","value");
startActivityAfterLogin(this,intent);

public void startActivityAfterLogin(Context context,Intent intent) {
    //未登錄(這里用自己的登錄邏輯去判斷是否未登錄)
    if (! UserUtils.getLoginStatus()) {//修改為自己的判斷登錄狀態(tài)方法
        ComponentName componentName = new ComponentName(context, LoginActivity.class);
        intent.putExtra("className", intent.getComponent().getClassName());
        intent.setComponent(componentName);
        super.startActivity(intent);
    } else {
        super.startActivity(intent);
    }
}

LoginActivity跳轉(zhuǎn)B(在LoginActivity界面中寫)

Intent intent= new Intent(this,NextActivty.class);
startActivityAfterLogin(intent);

   public void startActivity(Context context) {
        if (getIntent().getExtras() != null && getIntent().getExtras().getString("className") != null) {
            String className = getIntent().getExtras().getString("className");
            getIntent().removeExtra("className");
            if (className != null && !className.equals(context.getClass().getName())) {
                try {
                    ComponentName componentName = new ComponentName(context, Class.forName(className));
                    startActivity(getIntent().setComponent(componentName));
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
            }
        }
        finish();
    }

小結(jié)

把上面兩個(gè)方法放在BaseActivity內(nèi),即可輕松實(shí)現(xiàn)需求。兩個(gè)方法最主要用到ComponentName這個(gè)類和反射方式獲取類名這兩個(gè)關(guān)鍵點(diǎn)

友情鏈接

csdn登錄和跳轉(zhuǎn)判斷

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,310評(píng)論 25 708
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 6,523評(píng)論 0 17
  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AGI閱讀 16,009評(píng)論 3 119
  • 一樹一樹的花開是一個(gè)美麗的景象,在我的眼里卻只有一棵樹,這棵樹每到春天總有粉紅色的花朵冒出枝梢。喜歡在黃昏...
    冰夫閱讀 197評(píng)論 0 0
  • 剛開始接觸李笑來的文章的時(shí)候,是始于當(dāng)時(shí)想學(xué)時(shí)間管理這方面的相關(guān)知識(shí),而笑來的把時(shí)間當(dāng)朋友也是比較經(jīng)典的文章,讀完...
    Yuan_life_my閱讀 185評(píng)論 0 0