Java 如何在保留某些数据的同时重新启动主活动

Java 如何在保留某些数据的同时重新启动主活动,java,android,Java,Android,这是我的第一个应用程序,我正在尝试编写一个简单的撒谎者骰子游戏 我在主活动类中编写了所有内容,随机掷骰子,文本编辑框输入出价,按钮进行出价和呼叫 那么,在比赛结束后,我如何让它跟踪比分并再次跑步呢 我尝试过用重启按钮制作另一个活动屏幕,并在游戏结束后将其放到那里,这样我就可以重新启动主活动。然而,我能够从屏幕上按Backphone键,并在上一场比赛结束时卡住 此外,我还尝试使用数组来跟踪赢家和输家,但不确定如何将其从活动中来回移动。要重新启动主要活动,您可以执行以下操作 finish();

这是我的第一个应用程序,我正在尝试编写一个简单的撒谎者骰子游戏

我在主活动类中编写了所有内容,随机掷骰子,文本编辑框输入出价,按钮进行出价和呼叫

那么,在比赛结束后,我如何让它跟踪比分并再次跑步呢

我尝试过用重启按钮制作另一个活动屏幕,并在游戏结束后将其放到那里,这样我就可以重新启动主活动。然而,我能够从屏幕上按Backphone键,并在上一场比赛结束时卡住


此外,我还尝试使用数组来跟踪赢家和输家,但不确定如何将其从活动中来回移动。

要重新启动主要活动,您可以执行以下操作

finish();
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            startActivity(new Intent(getContext(), YourMainActivity.class));// then call again

通过使用preferences或sqlite来保留您的数据。您只需创建一个保存数字的全局数组,并在用户单击按钮或您希望触发滚动的任何内容时运行一个方法即可。一个简单的方法是

<Button
    android:layout_height="wrap_content"
    android: layout_width="wrap_content"
    android:text="Touch Me"
    android:on click="leRoll" />

然后在您的活动中,您可以使用一个名为leRoll的方法,当单击“触摸我”按钮时会触发该方法。所有的保存都可以使用全局数组在那里完成

不完全确定这是否是您想要的,但是:

您可以覆盖后退按钮以转到第二个活动的屏幕

public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
  Intent intentstart = new Intent(Activity2.this, MainActivity.class);
  intentstart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  startActivity(intentstart);
  return true;
}
return super.onKeyDown(keyCode, event);    
}

我建议您在SQLite数据库中记录您的得失。这听起来可能有些过分,但它非常适合存储任意数量的重复的结构化数据位。如果开销太大,那么打开一个文件并在末尾附加新的游戏分数,或者将它们存储在SharedReferences中的字符串数组中。对于存储简单的值向量来说,这三种方法中的任何一种都是一个很好的选择,因为您事先不知道可能有多少个值,并且可以从应用程序的任何部分读取它们


您应该使用SharedReference保存当前游戏状态,以便您的游戏活动可以在每次返回时显示正确的内容。游戏结束后,为游戏状态写入SharedReference值,表示玩家已处于游戏结束状态。然后,当活动下次启动时,它将知道开始一个新游戏。

我宁愿将游戏数据保存到某个数据库,然后重置游戏组件,也不愿重新启动整个活动。