我在Android应用中有5个活动。 活动A =飞溅 活动B和活动C =获取一些用户数据 活动D和活动E根据活动B和C中给出的用户信息显示一些计算值。 第一次启动我的应用程序后,活动B和C将不再显示给用户。所以用户只能插入一次他的信息。 (这是我使用共享偏好完成的) 现在我想要的是,如果用户按下活动D和E的后退按钮,每当他启动应用程序时,Splash屏幕就会出现,并将他直接带到活动D和E.从不活动B和D.
我在代码中执行此操作
@Override
public void onBackPressed() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Do you want to exit");
// alert.setMessage("Message");
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Your action here
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
onDestroy();
System.exit(0);
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {}
});
alert.show();
}
所以这段代码可以工作,但是当我再次启动我的应用程序时,会出现Splash屏幕= Activity A,然后将其重定向到Activity B和Activity C.然后。
此外,我已将Splash活动的意图传递给在此处工作的活动B.我不想要这个。请指导我。
答案 0 :(得分:0)
在您的活动A中,(启动画面)检查是否首次运行并相应地重定向用户:
第一次,当用户在活动B和C中保存数据时,请保存一个额外的布尔值以及您的用户信息:
SharedPreferences.Editor editor = getSharedPreferences("MyPrefs", MODE_PRIVATE).edit();
editor.putBoolean("firstRun", false);
editor.commit();
更改启动活动B的代码,如下所示:
SharedPreferences shared_prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
boolean firstRun= shared_prefs.getBoolean("firstRun", true);
if(firstRun)
{
Intent i = new Intent(ActivityA.this,ActivityB.class);
startActivity(i);
}
else
{
Intent i = new Intent(ActivityA.this,ActivityD.class);
startActivity(i);
}
希望它有所帮助。