Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SharedReference在Android上的活动之间传递数据?_Java_Android_Sharedpreferences - Fatal编程技术网

Java 如何使用SharedReference在Android上的活动之间传递数据?

Java 如何使用SharedReference在Android上的活动之间传递数据?,java,android,sharedpreferences,Java,Android,Sharedpreferences,我想将游戏分数从活动1 SummaryActivity.java保存并加载到活动2 LevelSelect.java。 因此,当达到某个分数时,某些按钮将可见。 我试过这个方法,但不管用 如何为这些不同的活动实施SharedReference 玩完游戏后,SummaryActivity.java是一个类 我使用int result将数据从SummaryActivity.java传递到LevelSelect.java,但不起作用 我想用SharedReferences将此分数发送到其他activi

我想将游戏分数从活动1 SummaryActivity.java保存并加载到活动2 LevelSelect.java。 因此,当达到某个分数时,某些按钮将可见。 我试过这个方法,但不管用

如何为这些不同的活动实施SharedReference

玩完游戏后,SummaryActivity.java是一个类

我使用int result将数据从SummaryActivity.java传递到LevelSelect.java,但不起作用

我想用SharedReferences将此分数发送到其他activity LevelSelect.java,这样我就可以使用按钮进行分级

2级到10级的默认按钮都不可见了,在分数达到700分以上后,我想让这些按钮可见。所以玩家可以玩更高的水平

但是,当我用数字将结果更改为800时,此代码运行良好。我不知道为什么结果不起作用

这个结果不能保存分数。但如果我使用谷歌排行榜,效果会很好

这是SummaryActivity.java:

这是LevelSelect.java:

这是用于按钮的:

改变

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


嗨@uguboz,我试过了,但没有工作。当我达到700点时,按钮仍然不见了。尝试Log.dgetClass.getSimpleName,结果是+myIntValue;看看它是否正确,如果条件是>700而不是>=700是的,我的条件是>700。我正在更新我的quewstion。首先,当结果为空时,为什么要使用sharedpref编辑器?每次设置结果后都应该使用sharedpref编辑器。因此SharedRef可以使用最新的结果值更新其值。
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" />
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();
    }
int myIntValue = sp.getInt("result", 0);
int myIntValue = sp.getInt("level1", 0);