簡體   English   中英

保存活動 - Android

[英]Saving the Activity - Android

我有一個帶有兩個活動的 android 應用程序 - activity_login.xmlactivity_dashboard.xml

當用戶第一次打開應用程序時,它應該將他們帶到activity_login ,然后他們應該登錄並轉到帶有注銷按鈕的activity_dashboard

如果他們按下Logout按鈕,它應該再次返回到activity_login 如果他們按下后退按鈕,它應該退出應用程序。 當他們按下應用程序圖標時,它應該直接將他們帶到activity_dashboard

我對如何保存活動並在按下應用程序圖標時返回該特定活動感到困惑。

如果你已經登錄了,你必須在啟動intent后調用finish()才能進入activity_dsahboard。在這種情況下,如果你還在登錄,你將直接進入activity_dashboard。這里是一個示例,

          Intent I = new Intent(this,ActivtyDashBoard.class);
           startActivity(i);
           finsih();//place it after you launch intent to go to 
                    //activity_dashboard

如果您想存儲登錄狀態,請使用共享首選項保存一個標識符,該標識符的值將在成功驗證時設置。只需創建一些邏輯並將標識符保存在共享 perefrence 中。這種方式對於專業應用程序來說並不理想。您需要一個整體這樣做有很多復雜的機制。

很簡單,您需要使用 SharedPreference 來存儲登錄狀態默認值,如果使用登錄時將值更改為 true,則為 false,每次打開應用程序時,只需檢查狀態並相應地導航,當用戶單擊后退按鈕時,檢查用戶正在登錄的 onResume 方法或然后不打開那個活動

使用這個https://medium.com/viithiisys/android-manage-user-session-using-shared-preferences-1187cb9c5cd8

觀察儀表板終止。

使用 startActivityForResult() 啟動儀表板活動並觀察儀表板活動是如何完成的。

  1. 如果儀表板活動是通過按下注銷按鈕關閉的,它不會做任何事情。
  2. 如果它是通過按后退按鈕關閉的,它也會完成 LoginActiivty。

這是完整的代碼:

登錄活動

public class LoginActivity extends AppCompatActivity {

    private Button login;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       login = findViewById(R.id.login);

       login.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               Intent intent = new Intent(LoginActivity.this, DashBoard.class);
               startActivityForResult(intent, 9000);
            }
        });

    }

    @Override
    public void onActivityResult(int req, int res, Intent result) {
         super.onActivityResult(req, res, result);
         if(res== Activity.RESULT_CANCELED){
            finish();
         }
     }
 }

儀表盤代碼

public class DashBoard extends AppCompatActivity {

    private Button logout;

    @Override
    public void onCreate(Bundle savecInstanceState){
        super.onCreate(savecInstanceState);
        setContentView(R.layout.dash_board);
        logout = findViewById(R.id.logout);
        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               setResult(Activity.RESULT_OK);
               finish();
            }
         });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM