最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android登錄的簡(jiǎn)單處理

 更新時(shí)間:2017年03月28日 08:43:52   作者:發(fā)強(qiáng)  
這篇文章主要介紹了Android登錄的簡(jiǎn)單處理,一個(gè)簡(jiǎn)易的Demo模擬登錄情況和未登錄情況下的界面跳轉(zhuǎn)處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

今天整理一下之前在項(xiàng)目中寫的關(guān)于某些界面需要登錄判斷處理。這里整理了一個(gè)簡(jiǎn)易的 Demo 模擬一下 登錄情況 和 未登錄情況 下的界面跳轉(zhuǎn)處理, 效果如圖:

以上分別模擬了,未登錄和已登錄 情況下的 界面跳轉(zhuǎn)和當(dāng)前界面事件處理。接下來我們來看一下實(shí)現(xiàn)方式。
先從核心代碼開始看:

public class GoLoginUtil {

 public static final String CLASSNAME = "className";

 public static final int CODE_LOGIN = 1; // 登錄成功回調(diào) 用于onActivityForResult 判斷


 /**
  * 登錄成功之后,通過 activityResult 回調(diào)到當(dāng)前界面
  *
  * @param activity
  * @param intent
  * @param requestCode
  */
 private static void startActivity(Activity activity, Intent intent, int requestCode) {
  if (requestCode == -1) {
   String targetClass = intent.getComponent().getClassName(); // 目標(biāo)類
   intent.putExtra(CLASSNAME, targetClass);
  }
  intent.setClass(activity, LoginActivity.class); // 跳轉(zhuǎn)重定向到登錄界面
  activity.startActivityForResult(intent, requestCode);
 }


 /**
  * 登錄成功之后,直接跳轉(zhuǎn)目標(biāo) Activity
  *
  * @param activity
  * @param intent
  */
 public static void startActivity(Activity activity, Intent intent) {
  startActivity(activity, intent, -1);
 }

 /**
  * 登錄成功回調(diào)到當(dāng)前界面
  * 使用 onActivityResult 方法接收, requestCode = CODE_LOGIN
  *
  * @param activity
  * @param intent
  */
 public static void startActivityForResult(Activity activity, Intent intent) {
  startActivity(activity, intent, CODE_LOGIN);
 }

}

這里可以看到,最主要的就是第一個(gè) private 修飾的 startActivity 方法,看過 Android Activity 的 startActivity 方法源碼的應(yīng)該知道,它里面其實(shí)就是調(diào)用的 startActivityForResult(intent , -1) . 所以我們這里也來用一下它的寫法。如果 等于 -1 ,那么就說明是有跳轉(zhuǎn)目標(biāo) Activity 的,那么我們就通過 Intent.getComponent().getClassName() 來獲取目標(biāo) Activity 的類名,再次添加到 Intent參數(shù)中,用于我們登錄成功之后的后續(xù)跳轉(zhuǎn)目標(biāo)。當(dāng)然,intent 中的其他參數(shù)是會(huì)一直攜帶著的,這里不用擔(dān)心其他參數(shù)。 不等于 -1 那么就是要進(jìn)行 setResult 回調(diào)了。所以,我們是通過 requestCode 是否等于 -1 來區(qū)分是繼續(xù)跳轉(zhuǎn),還是回調(diào)當(dāng)前界面。 工具類中的下面兩個(gè)方法,就把功能區(qū)分開了,這里基本上看著系統(tǒng)源碼來的。

然后再來進(jìn)行一下二次封裝,這里就需要判斷當(dāng)前 登錄狀態(tài)了,這里我也是模擬一下登錄狀態(tài),代碼如下:

public class IntentUtil {

 public static boolean isLogin; // 模擬獲取當(dāng)前用戶登錄狀態(tài)。

 /**
  * 需要登錄判斷
  *
  * @param activity
  * @param clazz
  * @param bundle
  */
 public static void startToLogin(Activity activity, Class clazz, Bundle bundle) {
  Intent intent = new Intent(activity, clazz);
  if (bundle != null) {
   intent.putExtras(bundle);
  }
  if (isLogin) {
   activity.startActivity(intent);
  } else {
   GoLoginUtil.startActivity(activity, intent);
  }
 }

 /**
  * 登錄成功會(huì)有回調(diào)
  * requestCode = Contants.CODE_LOGIN
  *
  * @param activity
  * @param bundle
  */
 public static void startToLoginResult(Activity activity, Bundle bundle) {
  Intent intent = new Intent();
  if (bundle != null) {
   intent.putExtras(bundle);
  }
  GoLoginUtil.startActivityForResult(activity, intent);
 }
}

寫到現(xiàn)在這樣,基本上需要進(jìn)行登錄跳轉(zhuǎn)界面的,可以直接調(diào)用 startToLogin 方法,根據(jù)登錄狀態(tài)進(jìn)行跳轉(zhuǎn)。至于 startToLoginResult 方法,目前還需要在調(diào)用時(shí)進(jìn)行判斷一下登錄狀態(tài),進(jìn)行區(qū)分處理,然后還要在 onActivityForResult 方法中進(jìn)行回調(diào)處理,這個(gè)暫時(shí)沒想到其他好的方法,各位大神如果有什么好的處理方式還請(qǐng)多多指教。

這里還沒完呢,我們的登錄界面也是需要一定的處理邏輯去進(jìn)行配合的。我們來看一下怎么去配合:

public class LoginActivity extends FragmentActivity {

 private String targetClass;

 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_login);
  targetClass = getIntent().getStringExtra(GoLoginUtil.CLASSNAME); // 目標(biāo)跳轉(zhuǎn)類


 }

 public void onLoginClick(View view) {
  // 模擬登錄成功操作
  if (!TextUtils.isEmpty(targetClass)) {
   // 這里就是執(zhí)行繼續(xù)跳轉(zhuǎn)操作
   try {
    Class clazz = Class.forName(targetClass);
    getIntent().setClass(this, clazz);
    startActivity(getIntent());
    finish();
   } catch (ClassNotFoundException e) {
    e.printStackTrace();
   }
  } else {
   // 這里是登錄成功,回調(diào)到之前界面 onActivityForResult()中 方法可根據(jù)自己需求處理。。
   setResult(RESULT_OK);
   finish();
  }
 }
}

最后來看一下我們的調(diào)用方式:

/**
  * 登錄跳轉(zhuǎn)
  *
  * @param view
  */
 public void onClick1(View view) {
  Bundle bundle = new Bundle();
  bundle.putString("content", et_content.getText().toString());
  IntentUtil.startToLogin(this, LoginSuccessActivity.class, bundle);
 }

 /**
  * 登錄回調(diào)
  *
  * @param view
  */
 public void onClick2(View view) {
  if (!IntentUtil.isLogin) {
   IntentUtil.startToLoginResult(this, null);
  } else {
   tv_text.setText("登錄成功");
  }
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (resultCode != RESULT_OK) {
   return;
  }
  if (requestCode == CODE_LOGIN) {
   tv_text.setText("登錄成功");
  }
 }

基本上要整理的就這么多。寫法上的一些不足,還請(qǐng)各位多多指點(diǎn)。

Demo 地址

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android基于高德地圖完全自定義Marker的實(shí)現(xiàn)方法

    Android基于高德地圖完全自定義Marker的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Android基于高德地圖完全自定義Marker的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • android界面布局之實(shí)現(xiàn)文本塊布局效果示例

    android界面布局之實(shí)現(xiàn)文本塊布局效果示例

    這篇文章主要介紹了android實(shí)現(xiàn)文本塊布局效果示例,需要的朋友可以參考下
    2014-04-04
  • Android編程之listView中checkbox用法實(shí)例分析

    Android編程之listView中checkbox用法實(shí)例分析

    這篇文章主要介紹了Android編程之listView中checkbox用法,結(jié)合實(shí)例形式分析了Android中checkbox的頁(yè)面布局及功能實(shí)現(xiàn)相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • 解決Android加殼過程中mprotect調(diào)用失敗的原因分析

    解決Android加殼過程中mprotect調(diào)用失敗的原因分析

    本文探討的主要內(nèi)容是mprotect調(diào)用失敗的根本原因,以及在加殼實(shí)現(xiàn)中的解決方案,通過本文的闡述,一方面能夠幫助遇到同類問題的小伙伴解決心中的疑惑,另一方面能夠給大家提供可落地的實(shí)現(xiàn)方案,需要的朋友可以參考下
    2022-01-01
  • Flutter 和 Android 互相傳遞數(shù)據(jù)的實(shí)現(xiàn)

    Flutter 和 Android 互相傳遞數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要介紹了Flutter 和 Android 互相傳遞數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Android實(shí)現(xiàn)文件下載進(jìn)度顯示功能

    Android實(shí)現(xiàn)文件下載進(jìn)度顯示功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)文件下載進(jìn)度顯示功能,檢測(cè)Android文件下載進(jìn)度,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 簡(jiǎn)單說說Android中如何使用攝像頭和相冊(cè)

    簡(jiǎn)單說說Android中如何使用攝像頭和相冊(cè)

    本篇文章主要介紹了簡(jiǎn)單說說Android中如何使用攝像頭和相冊(cè),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android自定義View實(shí)現(xiàn)多圖片選擇控件

    Android自定義View實(shí)現(xiàn)多圖片選擇控件

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)多圖片選擇控件,具有一定的實(shí)用性,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android計(jì)時(shí)器chronometer使用實(shí)例講解

    Android計(jì)時(shí)器chronometer使用實(shí)例講解

    這篇文章主要為大家詳細(xì)介紹了Android計(jì)時(shí)器chronometer使用實(shí)例,介紹了Android計(jì)時(shí)器chronometer基本使用方法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Flutter底部導(dǎo)航欄的實(shí)現(xiàn)方式

    Flutter底部導(dǎo)航欄的實(shí)現(xiàn)方式

    這篇文章主要為大家詳細(xì)介紹了Flutter底部導(dǎo)航欄的實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02

最新評(píng)論

皮山县| 石棉县| 来宾市| 崇阳县| 永康市| 右玉县| 大竹县| 化州市| 开阳县| 尼木县| 灵宝市| 隆安县| 辽阳县| 岳西县| 通山县| 顺平县| 永和县| 凤山县| 新乡市| 交口县| 体育| 涞水县| 班玛县| 奇台县| 盐津县| 原阳县| 平遥县| 扎赉特旗| 德阳市| 井冈山市| 德州市| 淮南市| 马边| 仪陇县| 会同县| 石门县| 台江县| 惠安县| 汕尾市| 科技| 中方县|