1

私はquiz、3つのアクティビティがあるという点で、を実行していQuestion1ますQuestion2Question3それぞれに4つの可能な回答(ボタン)があり、1つのボタンだけが正しいです。クイズの最後にユーザーのスコアを計算して表示する必要があります。

私はいくつかの調査を行いSHAREDPREFERENECES、解決策のようです。しかし、私はそれを使用する方法を知りません誰もが助けてくれます。Question1.javaコードは次のとおりです。それbtnAnswer1aが正解であると想定し、データを保存textviewして最後のアクティビティで表示するにはどうすればよいですか。

 Button Answer1, Answer2, Answer3, Answer4;
 public static final String PREFS_NAME = "MyPrefsFile";
 static SharedPreferences settings;
 SharedPreferences.Editor editor;
 int ScoreCount;

 @Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.answer1);

  settings = getSharedPreferences(PREFS_NAME, 0);
  editor = settings.edit();

  ScoreCount = settings.getInt("ScoreCount", 10);

   Answer1 = (Button) findViewById(R.id.btnAnswer1a);
   Answer2 = (Button) findViewById(R.id.btnAnswer1b);
   Answer3 = (Button) findViewById(R.id.btnAnswer1c);
   Answer4 = (Button) findViewById(R.id.btnAnswer1d);

   Answer1.setOnClickListener(this);
   Answer2.setOnClickListener(this);
   Answer3.setOnClickListener(this);
   Answer4.setOnClickListener(this);

         }

@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
switch (arg0.getId()) {


    case R.id.btnAnswer1a:
          Intent Screen1 = new Intent(Answer1.this, Color2.class); 
          Answer1.this.startActivity(Screen1); 
          editor.putInt("ScoreCount", 6);
          editor.commit();
        break;


case R.id.btnAnswer1b:
      Intent Screen = new Intent(Answer1.this, Color2.class); 
    Answer1.this.startActivity(Screen);  
    break;

case R.id.btnAnswer1c:
      Intent Screen3 = new Intent(Answer1.this, Color2.class); 
    Answer1.this.startActivity(Screen3);  
    break;

case R.id.btnAnswer1d:
    Intent Screen2 = new Intent(Answer1.this, Color2.class); 
    Answer1.this.startActivity(Screen2);  
   break;


}
4

3 に答える 3

1

意欲を持って情報を伝えたほうがいいと思います。あなたはそうすることができます:

Intent i = new Intent("com.yourPackage.yourActivity");
i.putExtra("keyForExtra", _ID);
startActivity(i);

そして、あなたができる結果の活動のonCreate

String data = getIntent().getStringExtra("keyForExtra");

この文字列を整数または好きなように解析できます。

ただし、共有設定でそれを行う場合は、次のように記述します。

SharedPreferences settings = getSharedPreferences(YOUR_CUSTOM_PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("myScore", yourScore); // you can put a lot of thngs there. 
editor.commit();

他に何を置くことができるかを知るには、ここを見てください

SharedPreferences settings = getSharedPreferences(YOUR_CUSTOM_PREFS_NAME, 0);
int currentScore = settings.getInt("myScore", defaultValue);

共有設定の詳細なストレージドキュメントについては、こちらをご覧ください

于 2012-10-15T09:58:56.040 に答える
0

SharedPreferencesに何かを書きたいときは、これを使用してください

SharedPreferences sharedPreferences = getSharedPreferences("your_name_of_shared_preferences", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.putInt("result", resultValue);
editor.commit();

そして、彼らから何かを読むには、これを行うだけです

SharedPreferences sharedPreferences = getSharedPreferences("your_name_of_shared_preferences", 0);
int result = sharedPreferences.getInt("result", defaultValue);

resultValueはクイズの結果であり、そのキーの下でsharedPreferencesに何も書き込まなかった場合はdefaultValueが必要です。

于 2012-10-15T10:02:27.767 に答える
0

質問ごとに異なるアクティビティが必要な特別な理由はありますか?それは私にはかなり非効率的です(冗長なコード、エラーが発生しやすい、メモリに関して)。すべての質問と回答を配列内に保存し、intを使用して現在の質問とスコアを追跡できます。質問に回答したら、回答を確認し、スコアを更新し、現在の質問をインクリメントし、新しい質問と回答を取得して、質問のテキストフィールドとボタンのラベルに設定します。すべてが1つのアクティビティ内に残っているため、そのようにスコアを渡す必要はありません。

于 2012-10-15T10:14:01.517 に答える