2016-10-01 34 views
-2

我想要將活動1(SummaryActivity.java)中的遊戲分數保存並加載到活動2(LevelSelect.java)中。 因此,某些按鈕在達到某個分數時可見。 我嘗試這種方法,但不起作用。如何使用SharedPreferences在Android上的活動之間傳遞數據?

如何爲這個不同的活動實現SharedPreferences?

SummaryActivity.java是完成遊戲後的一個類。

我用INT結果出於傳遞數據從SummaryActivity.javaLevelSelect.java,而不是工作。

我想用SharedPreferences將此分數發送給其他活動(LevelSelect.java),所以我可以使用按鈕進行一些操作。

級別2的默認按鈕直到級別10不可見(消失),並且在得分超過700點後,我想讓這些按鈕可見。所以玩家可以玩更高的水平。

但是,當我改變結果到(用數字),這個代碼是很好地工作。我不知道爲什麼結果不起作用。

結果不保存分數。但如果我使用Google排行榜,工作得很好。

這是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

嘗試Log.d(getClass()。getSimpleName(),「result is」+ myIntValue);並看看它是否爲真 – uguboz

+0

而你的條件是> 700不是> = 700 – uguboz

相關問題