2

こんにちは、私はアンドロイドが初めてで、実際にユーザーがボタンをクリックするとボタンがクリックイベントを記録するアプリケーションを開発しています-ボタンがクリックされるたびにカウンターをインクリメントする必要があります。ボタンは 1 つのアクティビティで表示され、ユーザーがボタンをクリックすると、別のアクティビティが表示され、結果が表示されます。

実際には、sharedPreferences をボタンに割り当ててから次のアクティビティに表示する際に問題が発生しているため、クリック数が発生します。

私が使用しているコードは次のとおりです。

MainActivity.java

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */

    /** Declare the variables being used */
    public static final String GAME_PREFERENCES = "GamePrefs";

     public static final String GAME_PREFERENCES_SCORE = "Score"; // Integer
    int counter;
    Button add;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        counter = 0;
        add = (Button) findViewById (R.id.bAdd);
        add.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                counter++;

                Intent openClickActivity2 = new Intent("com.android.jay.Results");
                startActivity(openClickActivity2);

            }
        });
       }
}

結果.java

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;
public class Results extends MainActivity{

    public void onCreate(Bundle savedInstanceState) {

        SharedPreferences mGameSettings;
        super.onCreate(savedInstanceState);
        mGameSettings = getSharedPreferences(GAME_PREFERENCES, Context.MODE_PRIVATE);
        setContentView(R.layout.results);

        final TextView DisplayResults =
                (TextView) findViewById(R.id.bAdd);
                if (mGameSettings.contains(GAME_PREFERENCES_SCORE)) {
                DisplayResults.setText(mGameSettings.getString(GAME_PREFERENCES_SCORE, “counter”));
                }
        }

}

私を導くための助けをいただければ幸いです。ありがとうございます

4

3 に答える 3

1

Preferences クラスを作成するだけです

public class Preferences {

String MASTER_NAME = "mysticmatrix_master";
SharedPreferences mysticMatrixPref;

Preferences(Context context) {
    mysticMatrixPref = context.getSharedPreferences(MASTER_NAME, 0);
}

public void setAddCount(int count) {
    SharedPreferences.Editor prefEditor = mysticMatrixPref.edit();
    prefEditor.putInt("count", count);
    prefEditor.commit();

}

public int getAddCount() {
    return mysticMatrixPref.getInt("count", 0);
}
}

MainActivity.java にこのコードを入れます

public class MainActivity extends Activity implements OnClickListener {

ImageButton add;
Preferences cpObj;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    preferences = new Preferences(getApplicationContext());

    /*
     * getting the count variable and adding 1 in that to check the condition of showing rate activity and adds
     */
     add = (Button) findViewById (R.id.bAdd);
    add.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
         cpObj = new Preferences(getApplicationContext());
         cpObj.setAddCount(cpObj.getAddCount() + 1);

        }
    });
    }
    }

結果アクティビティでは、カウントの値を取得するだけです

import android.content.Context;
public class Results extends MainActivity{
Preferences cpObj;

public void onCreate(Bundle savedInstanceState) {

     preferences = new Preferences(getApplicationContext());
    setContentView(R.layout.results);

    final TextView DisplayResults =
            (TextView) findViewById(R.id.bAdd);
            DisplayResults.setText(cpObj.getAddCount());
            }
    } }

これにより、結果のデフォルト値が「0」として取得され、それを Preferences クラスで設定できます

于 2012-10-13T10:35:49.580 に答える
1

MainActivity で GAME_PREFERENCES_SCORE を設定する必要があります。counter++ の後に次のようにします。

getSharedPreferences(GAME_PREFERENCES, Context.MODE_PRIVATE).edit().setInt(GAME_PREFERENCES_SCORE, counter). 専念();

于 2012-10-13T10:23:23.827 に答える
0

次のような方法を使用します。

    public static void SavePreference(Context context, String key, Integer value) {
    SharedPreferences.Editor editor = PreferenceManager
            .getSharedPreferences(GAME_PREFERENCES, Context.MODE_PRIVATE)
            .edit();
    editor.putInt(key, value);
    editor.commit();
}

そして、counter++ の後に onclick でこれを追加します。

SavePereference(context, "GAME_PREFERENCES_SCORE", counter);
于 2012-10-13T10:16:42.330 に答える