问题描述
我有一个具有两个活动的Android应用程序-activity_login.xml
和activity_dashboard.xml
。
用户首次打开应用程序时,应将他们带到activity_login
,然后他们应该登录并进入{注销按钮。
如果他们按下登出按钮,则应再次返回到activity_dashboard
。如果他们按返回按钮,则应退出应用程序。当他们按下应用程序图标时,应将其直接带到activity_login
。
我对如何保存活动并在按下应用程序图标时返回到该特定活动感到困惑。
解决方法
如果您已登录,则必须在启动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
如果要存储登录状态,请使用共享首选项保存一个标识符,该标识符的值将在成功认证时设置。只需创建一些逻辑并将标识符保存在共享性能中,这种方式就不适用于专业应用程序。为此需要很多复杂的机制。
,很简单,您需要使用SharedPreference来存储登录状态默认值,如果将登录更改值设为true时为false,则每次打开应用程序时只需检查状态并进行相应导航,当用户单击后退按钮时,请检查该用户的onResume方法登录或不登录,然后打开该活动
使用此 https://medium.com/viithiisys/android-manage-user-session-using-shared-preferences-1187cb9c5cd8
,观察仪表盘终止。
使用startActivityForResult()启动Dashboard Activity,并观察Dashboard Activity如何完成。
- 如果通过按“注销”按钮关闭了“仪表板活动”,它将不会执行任何操作。
- 如果通过按后退按钮将其关闭,它也会完成LoginActiivty。
以下是完整代码:
LoginActivity
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();
}
}
}
DashBoard代码
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();
}
});
}
}