gpt4 book ai didi

java - 如何保存游戏状态

转载 作者:行者123 更新时间:2023-12-02 09:29:11 25 4
gpt4 key购买 nike

我试图让我的应用程序在关闭或按下后退按钮时保存。我想让它记住哪些框被选中以及分数是多少。

我尝试浏览以前的文章将复选框状态保存到共享首选项,但它似乎没有做任何事情。我已经尝试了至少 5 种不同的方法,但它要么只是使应用程序崩溃,要么根本不执行任何操作。

这是我得到的代码:

public class levelOneActivity extends AppCompatActivity {

TextView scoreTextView;
Button backButton;
ConstraintLayout pictureConstraint;
Button nextLevelButton;
ListView levelOneListView;
ArrayAdapter arrayAdapter;
int score;
public static final String PREFS_NAME = "MyPrefsFile";
// SharedPreferences sharedPrefs = context.getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE);



public void backButton(View view) {
pictureConstraint.setVisibility(View.INVISIBLE);
}

public void nextLevelButton(View view) {
Log.i("info", "next level!");
Intent intent = new Intent(getApplicationContext(), levelTwoActivity.class);
startActivity(intent);
}


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level_one);
levelOneListView = findViewById(R.id.levelOneListView);
scoreTextView = findViewById(R.id.scoreTextView);
pictureConstraint = findViewById(R.id.pictureConstraint);
backButton = findViewById(R.id.backButton);
final ImageView imageView2 = findViewById(R.id.imageView2);
final TextView factTextView = findViewById(R.id.factTextView);
score = 0;
final ConstraintLayout levelFinishedConstraint = findViewById(R.id.finishedLevelConstraint);
nextLevelButton = findViewById(R.id.nextLevelButton);

final SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.woodlandwanderer", Context.MODE_PRIVATE);


final String[] levelOneListList = new String[]{
"Daisy", "Rock", "Tree", "Dandelion", "Grass"
};

final int[] imageList = new int[]{
R.drawable.daisy, R.drawable.rock, R.drawable.tree, R.drawable.dandelion, R.drawable.grass
};

final String[] factList = new String[]{
"Daisies are cool", "Rocks are fun to throw!", "Trees have leaves!", "Dandelions are yellow", "Grass is green"
};


arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_checked, levelOneListList);


levelOneListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
pictureConstraint.setVisibility(View.VISIBLE);
imageView2.setImageResource(imageList[i]);
factTextView.setText(factList[i]);
return true;
}
});

levelOneListView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
levelOneListView.setAdapter(arrayAdapter);


levelOneListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.i("Info", "Clicked");
CheckedTextView checkedTextView = (CheckedTextView) view;


if (checkedTextView.isChecked()) {

if (score < 9) {
score++;
} else {
score++;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
levelFinishedConstraint.setVisibility(View.VISIBLE);
}

}, 1000);
}
} else {
Log.i("Info", "Not checked");
score = score - 1;
}

scoreTextView.setText(Integer.toString(score) + "/10");
}
});
}
}

最佳答案

我建议您提供一个 xml 文件,在其中为选中或未选中的框设置自己的标记。每当用户退出程序或按后退按钮时,应用程序关闭之前的最后一件事就是保存复选框的当前状态并替换旧版本。

保存当前状态的另一种方法是数据库。我会修改它,以便甚至可以输入 xml 样式,或者您只需将复选框的名称推送到数据库即可。始终是关闭应用程序之前的最后一步。

关于java - 如何保存游戏状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58114597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com