0

私は共有設定エディターを使用して、プロジェクト内の別のクラスで保存して使用する数値を保存しています。これがデータを保存するためのソースです。

public void overallEditor(){
        SharedPreferences.Editor editor = someData.edit();
        editor.putInt("winsOverall", winsOverall);
        editor.putInt("losesOverall", losesOverall);
        editor.putInt("tiesOverall", tiesOverall);
        editor.commit();
    }

これは、データを取得する私のソースです:

private void getStats() {
        // TODO Auto-generated method stub
        SharedPreferences someData = getSharedPreferences(filename, 0);
        bestStreakStatsi = someData.getInt("newBestStreak", 0);
        winsOverall = someData.getInt("winsOverall", 0);
        tiesOverall = someData.getInt("tiesOverall", 0);
        losesOverall = someData.getInt("losesOverall", 0);
    }

何が起こっている

ここに画像の説明を入力

これは私の最初のクラスのソースです。私のソースからさらに必要な場合は提供できますが、関係のないものは切り取っています。

int wins, ties, loses, choice, streak, bestStreak, z, winsOverall, losesOverall, tiesOverall;

    private void refresh(){
            winrep.setText(w + wins);
            loserep.setText(l + loses);
            tierep.setText(t + ties);
            SharedPreferences.Editor editor = someData.edit();
            editor.putInt("winsp", wins);
            editor.putInt("losesp", loses);
            editor.putInt("tiesp", ties);
            editor.putInt("streakp", streak);
            editor.commit();
            overallEditor();
        }
        public void overallEditor(){
            SharedPreferences.Editor editor = someData.edit();
            editor.putInt("winsOverall", winsOverall);
            editor.putInt("losesOverall", losesOverall);
            editor.putInt("tiesOverall", tiesOverall);
            editor.commit();
        }

これは、int を取得する必要がある場所です。

public class stats extends Activity{
    public static String filename = "stats";
    TextView bestStreakStats, overallWins, overallLoses, overallTies;
    int bestStreakStatsi, winsOverall, losesOverall, tiesOverall;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.stats);
        initizialize();
        getStats();
        displayStats();
    }
    private void displayStats() {
        // TODO Auto-generated method stub
        bestStreakStats.setText("You best winning streak: \t" + bestStreakStatsi);
        overallWins.setText("Your overall wins: \t" + overallWins);
        overallLoses.setText("Your overall loses: \t" + overallLoses);
        overallTies.setText("Your overall ties: \t" + overallTies);
    }
    private void getStats() {
        // TODO Auto-generated method stub
        SharedPreferences someData = getSharedPreferences(filename, 0);
        bestStreakStatsi = someData.getInt("newBestStreak", 0);
        winsOverall = someData.getInt("winsOverall", 0);
        tiesOverall = someData.getInt("tiesOverall", 0);
        losesOverall = someData.getInt("losesOverall", 0);
    }
    private void initizialize() {
        // TODO Auto-generated method stub
        bestStreakStats = (TextView) findViewById(R.id.tvBestStreakStats);
        overallWins = (TextView) findViewById(R.id.tvOverallWins);
        overallLoses = (TextView) findViewById(R.id.tvOverallLoses);
        overallTies = (TextView) findViewById(R.id.tvOverallTies);
    }
}
4

2 に答える 2

0

これが起こっている理由は、あなたがこれをしているためである可能性が最も高いです

[TextView Object].getText();

これは正しくありません。次のようになります。

[TextView Object].getText().toString();

アップデート

あなたは本当にあなたの命名規則を修正する必要があります。これが発生する理由は、displayStats()メソッドに間違ったオブジェクトを表示しているためです。

アドバイスが必要な場合は、TextViewにこの命名規則をお勧めします

TextView tx_[somename];

そしてあなたの価値観

int value_[somename]
于 2012-08-13T01:21:26.507 に答える
0

あなたの問題は、間違った変数を参照していることだと思います。あなたが言っています。

overallWins.setText("Your overall wins: \t" + overallWins);

しかし、私はそれがすべきだと思います:

overallWins.setText("Your overall wins: \t" + winsOverall);

同じことが残りの部分にも当てはまり.setTextます。それが役立つかどうかを確認してください。

于 2012-08-13T01:43:59.190 に答える