2
// I declared myPrefs globally in the lass  
SharedPreferences myPrefs = null;

// this is called in my do draw function

public void doDraw() {
myPrefs = this.getSharedPreferences("myPrefs", Context.MODE_WORLD_READABLE); SharedPreferences.Editor editor = myPrefs.edit();
editor.putInt("MYHIGHSCORE", score); editor.commit();
}

を呼び出すたびにSharedPreferences.Editor editor = myPrefs.edit();、プログラムがクラッシュします。私が間違っていることは何ですか?ハイスコ​​ア システムの int を格納しようとしています。そしてSharedPreferences、私のようなミニハイスコアシステムには多くの提案がありました.

4

3 に答える 3

1

編集:

package com.example.logindemo;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class LoginPage extends Activity {

    EditText name = null, pwd = null;
    SharedPreferences login_pref = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_page);
        name = (EditText) findViewById(R.id.name_edt);
        pwd = (EditText) findViewById(R.id.pwd_edt);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_login_page, menu);
        return true;
    }

    public void loginMethod(View v) {
        login_pref = this.getSharedPreferences("login_pref",
                MODE_WORLD_READABLE);
        SharedPreferences.Editor login_pref_editor = login_pref.edit();
        login_pref_editor.putString("Name", name.getText().toString());

        login_pref_editor.commit();
        startActivity(new Intent(this, WelcomeScreen.class));
    }
}

これを試して。共有設定オブジェクトが正しくフェッチされなかったと思います。注:投稿を編集して、クラス全体のコードを追加しました。

于 2012-11-15T04:20:29.307 に答える
1

設定ファイルを 1 つだけ作成する場合は、このコードを使用してSharedPreference.

myPrefs = PreferenceManager.getDefaultSharedPreferences(this);
于 2012-11-15T06:26:23.390 に答える
0

問題はではなく、変更しedit()たときだと思いapply()ます。ここで解決策を見てください

于 2012-11-15T04:10:32.090 に答える