Java 如何使活动不返回到上一个活动
我制作了一个基本的android应用程序,包括3个活动;A、 B和C。A是主要活动。这是您首次启动应用程序时启动的第一个活动。在a中有一个按钮,它发送打开B的意图。在B中,用户可以选择他们的困难程度等。一旦选择,C就会被调用。C是主要游戏发生的地方。一旦用户完成游戏,就会弹出一个分数对话框并显示用户的分数 现在,当用户按下ok时,对话框就消失了,用户仍然在C上。如果他按下back按钮,B就会被调用。当用户在“分数”对话框中按下“确定”时,它会将用户发送到A,如果用户按下A上的“后退”按钮(他正试图从A返回到C),我如何防止这种情况发生Java 如何使活动不返回到上一个活动,java,android,Java,Android,我制作了一个基本的android应用程序,包括3个活动;A、 B和C。A是主要活动。这是您首次启动应用程序时启动的第一个活动。在a中有一个按钮,它发送打开B的意图。在B中,用户可以选择他们的困难程度等。一旦选择,C就会被调用。C是主要游戏发生的地方。一旦用户完成游戏,就会弹出一个分数对话框并显示用户的分数 现在,当用户按下ok时,对话框就消失了,用户仍然在C上。如果他按下back按钮,B就会被调用。当用户在“分数”对话框中按下“确定”时,它会将用户发送到A,如果用户按下A上的“后退”按钮(他正试
编辑=一个问题,我在我的C活动中使用共享首选项,在我的a活动中有一个“继续”按钮。当用户完成C时,我想销毁保存文件(brainData),然后继续A。我正在通过
SharedReferences pref=getSharedReferences(“brainData”,Context.MODE\u PRIVATE)销毁保存文件;pref.edit().clear().commit()代码>但当我在活动上按“继续”时,它仍会加载文件。我正在写入活动供参考的onPause()中的保存文件。在对话框的“确定”按钮上,添加启动活动A的意图。当用户单击“确定”时,只需添加:
startActivity(new Intent(C.this, A.class));
finish();
或者,如果您不想在一段时间内完成C,只需重写以下方法:
@Override // 2.0 and above
public void onBackPressed()
{
}
@Override // Before 2.0
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
return true;
}
return super.onKeyDown(keyCode, event);
}
在活动A和B中,您可以覆盖方法onPause()
,并且需要调用finish()
。这将在B启动时完成()活动A,在C启动时完成B。同时将onPause()
添加到下面的C代码中
@Override
protected void onPause()
{
super.onPause();
finish();
}
若要在单击对话框按钮时再次发送到,请使用下面的代码再次启动活动A
startActivity(new Intent(C.this, A.class));
用于在onclick方法do中单击ok按钮时删除SharedReference
****删除所有首选项:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
****删除单一首选项:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
添加标志Intent。启动活动B时标记活动\u否\u历史记录
Intent i = new Intent(A.this,B.class);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
第二种方法是向清单文件中的活动B添加参数android:noHistory=“true”
这将防止B出现在后退中
其他答案只是向堆栈中添加另一个A活动,而不是从中删除B
要在按“分数”对话框中的“确定”按钮时离开活动C,只需在“确定”按钮中调用activity.finish()
,然后单击“侦听器”。谢谢您的提示。finish()有效。有一个问题,我在我的C活动中使用了共享首选项,在我的a活动中有一个“继续”按钮。当用户完成C时,我想销毁保存文件(brainData),然后继续A。我正在通过SharedReferences pref=getSharedReferences(“brainData”,Context.MODE\u PRIVATE)销毁保存文件;pref.edit().clear().commit()代码>但当我在活动上按“继续”时,它仍会加载文件。我正在写入C Activity的onPause()中的保存文件供参考。单击“确定”按钮时,您需要处理SharedReference。首先处理SharedReference,然后处理startactivity A。是否只删除RepReference???如果是,请参阅我的编辑。并编辑您的问题,添加关于SharedReferences的内容。我想删除此首选项。基本上,应该没有保存数据的痕迹您的编码对于删除首选项是正确的,只需将其添加到对话框的onclick og ok按钮中即可。我意识到我的代码中没有上下文键。当我将其写入代码时,我得到一个错误“无法解析关键字上下文”,感谢您的输入。我已经更新了问题。你介意看一下吗?非常感谢。