Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使活动不返回到上一个活动_Java_Android - Fatal编程技术网

Java 如何使活动不返回到上一个活动

Java 如何使活动不返回到上一个活动,java,android,Java,Android,我制作了一个基本的android应用程序,包括3个活动;A、 B和C。A是主要活动。这是您首次启动应用程序时启动的第一个活动。在a中有一个按钮,它发送打开B的意图。在B中,用户可以选择他们的困难程度等。一旦选择,C就会被调用。C是主要游戏发生的地方。一旦用户完成游戏,就会弹出一个分数对话框并显示用户的分数 现在,当用户按下ok时,对话框就消失了,用户仍然在C上。如果他按下back按钮,B就会被调用。当用户在“分数”对话框中按下“确定”时,它会将用户发送到A,如果用户按下A上的“后退”按钮(他正试

我制作了一个基本的android应用程序,包括3个活动;A、 B和C。A是主要活动。这是您首次启动应用程序时启动的第一个活动。在a中有一个按钮,它发送打开B的意图。在B中,用户可以选择他们的困难程度等。一旦选择,C就会被调用。C是主要游戏发生的地方。一旦用户完成游戏,就会弹出一个分数对话框并显示用户的分数

现在,当用户按下ok时,对话框就消失了,用户仍然在C上。如果他按下back按钮,B就会被调用。当用户在“分数”对话框中按下“确定”时,它会将用户发送到A,如果用户按下A上的“后退”按钮(他正试图从A返回到C),我如何防止这种情况发生


编辑=一个问题,我在我的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按钮中即可。我意识到我的代码中没有上下文键。当我将其写入代码时,我得到一个错误“无法解析关键字上下文”,感谢您的输入。我已经更新了问题。你介意看一下吗?非常感谢。