Я хочу сохранить и загрузить игровой счет от активности 1 (SummaryActivity.java) до действия 2 (LevelSelect.java). Таким образом, некоторые кнопки будут видны при достижении определенного результата. Я пробую этот метод, но не работает.Как передавать данные между действиями на Android с SharedPreferences?
Как реализовать SharedPreferences для этих различных видов деятельности?
SummaryActivity.java - это класс, когда он закончил играть в игру.
Я использовал Int результата данных пропусков от SummaryActivity.java к LevelSelect.java и не работает.
Я хочу отправить этот счет другим действиям (LevelSelect.java) с SharedPreferences, поэтому я могу сделать уровень с помощью кнопок.
Кнопки по умолчанию для уровня 2 до уровня 10 невидимы (ушли), и после того, как оценка достигла более 700 очков, я хочу сделать видимыми кнопки. Таким образом, игрок может играть с более высоким уровнем.
Но, когда я изменить результат к (с номером), этот код работает хорошо. Не знаю почему результат нет работа.
То, что результат не сохраняет счет. Но работать нормально, если я использовал Google Leaderboard.
Это SummaryActivity.java:
int result;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.summary);
SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor=saved_values.edit();
editor.putInt("level1", result);
editor.apply();
mclient = getApiClient();
if(mclient.isConnected())
{
Games.Leaderboards.submitScore(getApiClient(),
getString(R.string.leaderboard_level_1),
result); // this result is work
}
}
private void displaySummary()
{
String summary = getString(R.string.answered)
+ " " + mCorrectAnswers
+ " " + getString(R.string.of)
+ " " + mTotalQuestions
+ " " + getString(R.string.questions_correctly);
mSummaryText.setText(summary);
int score = (int)(((double)mCorrectAnswers/(double)mTotalQuestions) * 1000); // this is score
result = (score);
mScoreText.setText(score + "");
}
Это LevelSelect.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.levelselect);
SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(this);
count = saved_values.getInt("level1", 0);
// This button is not visible by default.
// I want to make it visible when result score reached 700 pts
Button level2Button = (Button) findViewById(R.id.level2Button);
level2Button.setOnClickListener (new View.OnClickListener() {
public void onClick(View v) {
Sound.playButtonSelect();
Intent i = new Intent(getApplicationContext(),L2_MainActivity.class);
startActivity(i);
finish();
}
});
if (count > 700)
{
level2Button.setVisibility(View.VISIBLE);
}
Это для кнопки:
<Button
android:id="@+id/level2Button"
style="@style/FeedbackButton"
android:layout_height="40dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginBottom="10dp"
android:visibility="gone"
android:text="@string/level2" />
РЕШЕН. Это мой новый SummaryActivity.java:
int result;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.summary);
mclient = getApiClient();
if(mclient.isConnected())
{
Games.Leaderboards.submitScore(getApiClient(),
getString(R.string.leaderboard_level_1),
result); // this result is work
}
}
private void displaySummary()
{
String summary = getString(R.string.answered)
+ " " + mCorrectAnswers
+ " " + getString(R.string.of)
+ " " + mTotalQuestions
+ " " + getString(R.string.questions_correctly);
mSummaryText.setText(summary);
int score = (int)(((double)mCorrectAnswers/(double)mTotalQuestions) * 1000); // this is score
result = (score);
mScoreText.setText(score + "");
SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor=saved_values.edit();
editor.putInt("level1", result);
editor.apply();
}
Привет @uguboz, я стараюсь, но не работает. Кнопка все еще ушла, когда я достиг 700 очков. – Bonnie7
Try Log.d (getClass(). GetSimpleName(), "result is" + myIntValue); и посмотрим, правда ли это – uguboz
И ваше условие if> 700 не> = 700 – uguboz