0

フォームに入力する必要があり、「戻る」ボタンを押して保存します。たとえば、設定に保存します。または、ログに表示することもできます。

問題は、私が使用するときですonBackPressed()-アクティビティは、実際にフィールドにあった結果ではなく、XML から結果onPause()を返します。同じことが当てはまります。myEditText.getText().toString()myEditTextonDestroy()

もちろん、アクティビティが実行されず、XML から結果を取得しないため、ハングした場合でもsomeButton.onClickListener()データは適切に保存されますが、[戻る] ボタンを押して正確に保存する必要があります。myEditTextonPause()

コードは基本的なものです:

    EditText etCompetitionName;
Competition competition;
etCompetitionName=(EditText) findViewById(R.id.etCompetitionName);
 Intent intent=getIntent();//I get number of object to work with
pos=intent.getIntExtra("pos", -1); // this is this number
  competition=getObject(pos);// well, this is loading this object
 olDetCompetitionName=competition.getName();//getting name from loaded object
          etCompetitionName.setText(olDetCompetitionName);//set this text to EditText field
...
then :

protected void onDestroy() {
    super.onDestroy();
//try to save

competition.setName(etCompetitionName.getText().toString());
        saveObject(competition);
}    

したがって、最初に設定した古い値が保存されます。設定しない場合は、レイアウト xml から取得されます。それはonPause()私がそれを避ける必要があるという問題です。

4

2 に答える 2

2

あなたの質問は非常に紛らわしいですが、オーバーライドonBackPressed()するとデータを取得できます。

@Override
public void onBackPressed()
{
     String text = myEditText.getText().toString();
     // save text
     super.onBackPressed();
}

あなたがこれをやったと言ったのは知っていますが、これがうまくいかない場合は、どのようにやっているかを示してください. これにより、ユーザーが入力したものは何でも変数に入れられ、それをどこにでもtext保存できます。SharedPreferences

onPause()たとえば、何か他のものがフォアグラウンドに来た場合に保存したい場合は、 で同じことを行うこともできます。

于 2013-11-10T14:04:05.703 に答える
0

SecondActivity.Java -> 2 つの edittext 値を SharedPReference に保存し、MainActivity インテントを呼び出しました

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    Editor editor = sharedPreferences.edit();
    editor.putString("1", a.getText().toString());
    editor.putString("2", b.getText().toString());
    editor.commit();
    Intent i = new Intent(SecondActivity.this,MainActivity.class);
    SecondActivity.this.startActivity(i);
}

MainActivity.Java -> 共有設定の値でトーストを表示するボタン リスナーがあります。

show.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
            String  a = pref.getString("1", "") ;
            String b = pref.getString("2", "");
            Toast.makeText(getApplicationContext(),a+"  "+b, Toast.LENGTH_LONG).show();
        }
    });
于 2013-11-10T14:36:11.013 に答える