我想要將活動1(SummaryActivity.java)中的遊戲分數保存並加載到活動2(LevelSelect.java)中。 因此,某些按鈕在達到某個分數時可見。 我嘗試這種方法,但不起作用。如何使用SharedPreferences在Android上的活動之間傳遞數據?
如何爲這個不同的活動實現SharedPreferences?
SummaryActivity.java是完成遊戲後的一個類。
我用INT結果出於傳遞數據從SummaryActivity.java到LevelSelect.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();
}
嗨@uguboz,我嘗試,但不起作用。當我達到700點時,按鈕仍然消失。 – Bonnie7
嘗試Log.d(getClass()。getSimpleName(),「result is」+ myIntValue);並看看它是否爲真 – uguboz
而你的條件是> 700不是> = 700 – uguboz