【发布时间】:2014-03-02 15:56:30
【问题描述】:
我在表格布局中创建了一个井字游戏应用程序,该应用程序在三行中包含 9 个游戏按钮,一个显示轮到谁的文本视图和一个位于底部的新游戏按钮。 我想在代码中添加共享首选项,这样如果我切换方向,游戏就不会继续重启。我知道我需要一个 onPause 和 onResume 方法,但我不确定这些方法中的内容。有人可以帮助实现共享偏好的方法吗?以下是游戏的大部分代码:
private SharedPreferences prefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tic_tac_toe);
//get references to the widgets
square1 = (Button) findViewById(R.id.square1);
square2 = (Button) findViewById(R.id.square2);
square3 = (Button) findViewById(R.id.square3);
square4 = (Button) findViewById(R.id.square4);
square5 = (Button) findViewById(R.id.square5);
square6 = (Button) findViewById(R.id.square6);
square7 = (Button) findViewById(R.id.square7);
square8 = (Button) findViewById(R.id.square8);
square9 = (Button) findViewById(R.id.square9);
messageTextView = (TextView) findViewById(R.id.messageTextView);
square1.setOnClickListener(this);
square2.setOnClickListener(this);
square3.setOnClickListener(this);
square4.setOnClickListener(this);
square5.setOnClickListener(this);
square6.setOnClickListener(this);
square7.setOnClickListener(this);
square8.setOnClickListener(this);
square9.setOnClickListener(this);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
protected void onPause(){
}
public void onResume() {
super.onResume();
}
@Override
public void onClick(View v) {
boolean flag;
String lbl = messageTextView.getText().toString();
Button btn = (Button) v;
if (btn.getText().toString().equals("")){
if (lbl.equals("Player X\'s turn")){
btn.setText("X");
messageTextView.setText("Player O\'s turn");
}
else{
btn.setText("0");
messageTextView.setText("Player X\'s turn");
}
}
flag = determineWinner();
if (!flag){
checkAgain();
}
}
public boolean determineWinner(){
if (square1.getText().toString().equals("X") &&
square2.getText().toString().equals("X")
&& square3.getText().toString().equals("X"))
{
message = "Player X wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square1.getText().toString().equals("X")
&& square4.getText().toString().equals("X")
&& square7.getText().toString().equals("X"))
{
message = "Player X wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square4.getText().toString().equals("X")
&& square5.getText().toString().equals("X")
&& square6.getText().toString().equals("X"))
{
message = "Player X wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square7.getText().toString().equals("X")
&& square8.getText().toString().equals("X")
&& square9.getText().toString().equals("X"))
{
message = "Player X wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square2.getText().toString().equals("X")
&& square5.getText().toString().equals("X")
&& square8.getText().toString().equals("X"))
{
message = "Player X wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square3.getText().toString().equals("X")
&& square6.getText().toString().equals("X")
&& square9.getText().toString().equals("X"))
{
message = "Player X wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square1.getText().toString().equals("X")
&& square5.getText().toString().equals("X")
&& square9.getText().toString().equals("X"))
{
message = "Player X wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square3.getText().toString().equals("X")
&& square5.getText().toString().equals("X")
&& square7.getText().toString().equals("X"))
{
message = "Player X wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square1.getText().toString().equals("0")
&& square2.getText().toString().equals("0")
&& square3.getText().toString().equals("0"))
{
message = "Player O wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square4.getText().toString().equals("0")
&& square5.getText().toString().equals("0")
&& square6.getText().toString().equals("0"))
{
message = "Player O wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square7.getText().toString().equals("0")
&& square8.getText().toString().equals("0")
&& square9.getText().toString().equals("0"))
{
message = "Player O wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square1.getText().toString().equals("0")
&& square4.getText().toString().equals("0")
&& square7.getText().toString().equals("0"))
{
message = "Player O wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square2.getText().toString().equals("0")
&& square5.getText().toString().equals("0")
&& square8.getText().toString().equals("0"))
{
message = "Player O wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square3.getText().toString().equals("0")
&& square6.getText().toString().equals("0")
&& square9.getText().toString().equals("0"))
{
message = "Player O wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square1.getText().toString().equals("0")
&& square5.getText().toString().equals("0")
&& square9.getText().toString().equals("0"))
{
message = "Player O wins";
messageTextView.setText(message);
disableButtons();
return true;
}
if (square3.getText().toString().equals("0")
&& square5.getText().toString().equals("0")
&& square7.getText().toString().equals("0"))
{
message = "Player O wins";
messageTextView.setText(message);
disableButtons();
return true;
}
return false;
}
【问题讨论】:
-
I want to add shared preferences to the code so the game doesn't keep restarting if i swtich orientations.- 为什么你的游戏会在方向改变时重新启动? -
我不会使用 SharedPreferences,而是使用 onPause/onResume 机制。
-
不知道为什么换方向后游戏会重启
-
这是默认的android行为developer.android.com/guide/topics/resources/…
标签: java android eclipse sharedpreferences tic-tac-toe