2016-10-01 2 views
-2

Я хочу сохранить и загрузить игровой счет от активности 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(); 
    } 

ответ

0

Изменить

int myIntValue = sp.getInt("result", 0); 

Для

int myIntValue = sp.getInt("level1", 0); 
+0

Привет @uguboz, я стараюсь, но не работает. Кнопка все еще ушла, когда я достиг 700 очков. – Bonnie7

+0

Try Log.d (getClass(). GetSimpleName(), "result is" + myIntValue); и посмотрим, правда ли это – uguboz

+0

И ваше условие if> 700 не> = 700 – uguboz