Android 安卓:杀死一个活动
我有一个活动,用户把他的昵称。我不想在这之后再回去。我什么都试过了,但运气不好。迄今为止: 清单Android 安卓:杀死一个活动,android,android-activity,back-button,Android,Android Activity,Back Button,我有一个活动,用户把他的昵称。我不想在这之后再回去。我什么都试过了,但运气不好。迄今为止: 清单 <activity android:name=".NewUserActivity" android:noHistory="true" /> <activity android:name=".PvP.PVPWinningActivity" /> 或者再次在活动中: btnEnterDungeons.setOnClickListener(new View
<activity
android:name=".NewUserActivity"
android:noHistory="true" />
<activity android:name=".PvP.PVPWinningActivity" />
或者再次在活动中:
btnEnterDungeons.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!TextUtils.isEmpty(editUsername.getText().toString().trim())) {
uploadUserData();
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.setClass(NewUserActivity.this, GameChooseActivity.class);
startActivity(intent);
finish();
}
这些都不管用。实际上,我想完全终止活动,不使用后退按钮或任何方式再次访问。您可以使用以下代码:
Intent intent=new Intent(NewUserActivity.this, GameChooseActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
NewUserActivity.this.finish();
一次性安装?
据我所知,您需要一次性安装活动。您的代码很好。我看到的唯一问题是,当您再次打开应用程序时,它会从头开始。这是因为代码中没有逻辑来检查您是否已经完成了一次性设置。为此,您可以使用SharedReference
您可以创建启动活动,并根据布尔标志检查一次性设置是否完成 因此,我的建议是用户第一次打开应用程序
SplashActivity-->新用户活动-->游戏选择活动
否则
SplashActivity-->游戏选择活动 如何进行一次性设置? 一次性设置完成后,将
hasDoneSetUp
设置为true,并将此值保存在SharedReference
中,以便再次打开应用程序时,它将检查一次性设置是否完成
将其他数据保存在SharedReference或SQLiteDatabase中,并在GameChooseActivity中检索这些数据。
public void startOneTimeSetUp(){
if(!TextUtils.isEmpty(editUsername.getText().toString().trim())) {
uploadUserData();
Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class);
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
Editor editor = pref.edit();
editor.putBoolean("hasDoneSetup", true);
editor.commit();
finish();
}
}
public boolean checkForSetUp(){
return pref.getBoolean("hasDoneSetup", true);
}
public void startGameChooseActivity(){
Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class);
startActivity(intent);
}
相关链接
如果您不知道如果您不知道如何将SharedReference与Android的较新版本>=API 16一起使用,请使用finishAffinity() 有限性();成功了
正如我所读到的,建议使用just finish();对于较新的API(我使用>=17),必须使用finishAfinity() 在NewUserActivity中,重写OnBackPressed()方法 然后调用finish;杀死当前的活动; 请参见下面的示例实现: @凌驾 public void onBackPressed(){
那么是说,当你从GameChoose活动中按后退按钮时,它会返回到NewUserActivity?或者你想在再次打开应用程序时从GameChoose活动开始?请澄清,即使是从GameChoose活动或其他活动中,按后退,返回到新用户,
SplashActivity extends AppcompatActivity{
boolean hasDoneSetUp = false;
private SharedPreferences pref;
private Editor editor;
protected void onCreate(Bundle sis)
{
super.onCreate(sis);
setContentView(R.layout.splash);
pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
editor = pref.edit();
hasDoneSetUp = checkForSetUp();
if(!hasDoneSetUp)
startOneTimeSetUp();
else
startGameChooseActivity();
}
}
public void startOneTimeSetUp(){
if(!TextUtils.isEmpty(editUsername.getText().toString().trim())) {
uploadUserData();
Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class);
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
Editor editor = pref.edit();
editor.putBoolean("hasDoneSetup", true);
editor.commit();
finish();
}
}
public boolean checkForSetUp(){
return pref.getBoolean("hasDoneSetup", true);
}
public void startGameChooseActivity(){
Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class);
startActivity(intent);
}
killActivity();
})
.setNegativeButton("No", null)
.show();
}
private void killActivity() {
finish();
}