我正在尝试制作一个简单的数独,但我的“继续”按钮有问题。当您第一次启动应用程序时,该按钮被禁用:
continueButton.setEnabled (false);
从而导致用户不得不使用NewGame按钮。该按钮自动启用继续按钮:
continueButton.setEnabled (true);
问题是,关闭应用程序,使用退出按钮或手机的后退按钮,我失去了继续按钮的状态,当重新启动应用程序时,它再次被禁用。
这是我的代码:
public class Sudoku extends Activity implements OnClickListener {
private static final String TAG = "Sudoku";
private static final String PROFILE = "stato";
boolean t = false;
SharedPreferences preferences;
int a , b = 0, c = 0;
View continueButton;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Set up click listeners for all the buttons
continueButton = findViewById(R.id.continue_button);
continueButton.setOnClickListener(this);
View newButton = findViewById(R.id.new_button);
newButton.setOnClickListener(this);
View aboutButton = findViewById(R.id.about_button);
aboutButton.setOnClickListener(this);
View exitButton = findViewById(R.id.exit_button);
exitButton.setOnClickListener(this);
t = isFirstRun();
if (t == false){
continueButton.setEnabled(false);
}else{
continueButton.setEnabled(true);
}
}
@Override
protected void onResume() {
super.onResume();
Music.play(this, R.raw.main);
}
@Override
protected void onPause() {
super.onPause();
Music.stop(this);
}
public void savePreferences(){
SharedPreferences.Editor ed = preferences.edit();
ed.putBoolean("button", true);
ed.commit();
}
public boolean isFirstRun(){
preferences = PreferenceManager.getDefaultSharedPreferences(this);
return preferences.getBoolean("button", t);
}
//onClick method
public void onClick(View v) {
switch (v.getId()) {
case R.id.continue_button:
a = 1;
startGame(Game.DIFFICULTY_CONTINUE);
break;
// ...
case R.id.about_button:
Intent i = new Intent(this, About.class);
startActivity(i);
break;
// More buttons go here (if any) ...
case R.id.new_button://button NewGame when pressed enable continueButton
continueButton.setEnabled(true);
a = 0;
openNewGameDialog();
break;
case R.id.exit_button: //exit button
finish();
break;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
finish();
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.settings:
startActivity(new Intent(this, Prefs.class));
return true;
// More items go here (if any) ...
}
return false;
}
/** Ask the user what difficulty level they want */
private void openNewGameDialog() {
new AlertDialog.Builder(this)
.setTitle(R.string.new_game_title)
.setItems(R.array.difficulty,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface,
int i) {
startGame(i);
}
})
.show();
}
/** Start a new game with the given difficulty level */
@SuppressLint("ParserError")
private void startGame(int i) {
Log.d(TAG, "clicked on " + i);
Intent intent = new Intent(this, Game.class);
intent.putExtra("blocca", a);
intent.putExtra(Game.KEY_DIFFICULTY, i);
startActivity(intent);
}
}