0

LogoQuiz ゲームでは、正解を入力すると答えが表示され、アクティビティがフリーンします。その画面に戻るたびに、同じものが表示されます。それはどのように行われますか?誰でも例を挙げてもらえますか?

public class Activity3 extends Activity implements OnClickListener {

private Button Hint1;
private Button Hint2;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity3);

    Hint1 = (Button) findViewById(R.id.Hint1);
    Hint2 = (Button) findViewById(R.id.Hint2);
    Hint1.setOnClickListener(this);
    Hint2.setOnClickListener(this);
    Hint2.setEnabled(false);

    final EditText input = (EditText) findViewById(R.id.answer);

    final TextView display = (TextView) findViewById(R.id.response);

    input.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
             if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                        (keyCode == KeyEvent.KEYCODE_ENTER)) {

            String check = input.getText().toString().replace(" ","");
            if(check.equalsIgnoreCase("good")){


                display.setText("correct");
                input.setEnabled(false);
            } else{
                display.setText("Wrong");
            }
            return true;                        
            }
            return false;}

                    });

    }



@Override
public void onClick(View view) {
    switch(view.getId()){
    case R.id.Hint1:
        showOneButtonDialog();
        break;
    case R.id.Hint2:
        showTwoButtonDialog();
        break;

}}
private void showOneButtonDialog()
{
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    dialogBuilder.setTitle(" Hint 1 ");
    Hint2.setEnabled(true);
    dialogBuilder.setMessage(" This is your Hint1");
    AlertDialog alertDialog = dialogBuilder.create();
    alertDialog.show();

}
private void showTwoButtonDialog()
{
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    dialogBuilder.setTitle(" Hint 2 ");
    dialogBuilder.setMessage("This is your Hint2 ");
    AlertDialog alertDialog = dialogBuilder.create();
    alertDialog.show();

}
}
4

2 に答える 2

0

アクティビティで:

private String question;

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putString("question", question);
    super.onSaveInstanceState(outState);
}

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

            if (savedInstanceState != null) {
               question = savedInstanceState.getString(
                "question");
            }

}

編集:

文字列を永続的に保存したい場合:

共有設定で文字列を保存し、アプリ内の任意の場所で再度取得する例。

public class PreferencesData {

    public static void saveString(Context context, String key, String value) {
        SharedPreferences sharedPrefs = PreferenceManager
                .getDefaultSharedPreferences(context);
        sharedPrefs.edit().putString(key, intValue).commit();
    }

    public static int getString(Context context, String key) {
        SharedPreferences sharedPrefs = PreferenceManager
                .getDefaultSharedPreferences(context);
        return sharedPrefs.getString(key, "");
    }
}

使用法:

PreferencesData.saveString(context, "mynote", "buy more stuff");
// retrieve
String note = PreferencesData.getString(context, "mynote");

これを使用して一時停止時に文字列を保存し、onCreate または情報が必要な場所で再作成します

他の単純型にも同じ方法を簡単に使用できます。

あなたの場合:

@Override
protected void onPause() {
    PreferencesData.saveString(this, "answer", input.getText().toString());
    super.onPause();
}

そして onCreate() で:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity3);

    Hint1 = (Button) findViewById(R.id.Hint1);
    Hint2 = (Button) findViewById(R.id.Hint2);
    Hint1.setOnClickListener(this);
    Hint2.setOnClickListener(this);
    Hint2.setEnabled(false);

    final EditText input = (EditText) findViewById(R.id.answer);

    // set to empty string if no value is saved yet
    input.setText(PreferencesData.getString(this, "answer"));

    ....
}
于 2013-09-26T11:54:01.933 に答える
0

インスタンスを SharedPreferences に保存する必要があります

res例:そうするには、文字列変数を保存する必要があります

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(YourActivityName.this);

Editor edit1 = remembermepref.edit();
                edit1.putString("result_key",youredittext.getText().toString);
                edit1.commit();

onCreate() で結果を取得するには、次を使用します。

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(YourActivityName.this);
String res1 = pref.getString("result_key");
if(res1.eqauls("correct")
{
youredittext.setText("correct");
}

res1保存された結果を好きなように使用してください。最も重要なことは、復元に同じキーを使用したかどうか、および SharedPreference に値を保存したかどうかを確認することです。

お役に立てれば..

于 2013-09-26T11:52:01.523 に答える