0

ユーザーエントリをフォームに保存しようとしていますが、何らかの理由で機能しません。アプリケーションを強制終了して再起動すると、データが表示されません。

私の目的は、ユーザーがフォームへの入力の途中でアプリケーションが強制終了された場合、アプリケーションが再起動したときにエントリがまだ残っていることです。どんなガイダンスでも大歓迎です。

public class MainActivity extends Activity {
     public final static String EXTRA_FROM = "com.example.assignment1.FROM";
     public final static String EXTRA_TO = "com.example.assignment1.TO";
     public final static String EXTRA_CC = "com.example.assignment1.CC";
     public final static String EXTRA_BCC = "com.example.assignment1.BCC";
     public final static String EXTRA_SUBJECT = "com.example.assignment1.SUBJECT";
     public final static String EXTRA_COMPOSE = "com.example.assignment1.COMPOSE";

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    protected void onSaveInstanceState(Bundle outState)
    {
        super.onSaveInstanceState(outState);
        EditText emailFrom =(EditText) findViewById(R.id.editEmailFrom);
        EditText emailTo =(EditText) findViewById(R.id.editEmailTo);
        EditText emailCc =(EditText) findViewById(R.id.editEmailCc);
        EditText emailBcc =(EditText) findViewById(R.id.editEmailBcc);
        EditText emailSubject =(EditText) findViewById(R.id.editEmailSubject);
        EditText emailCompose =(EditText) findViewById(R.id.editEmailCompose);

        String from = emailFrom.getText().toString();
        String to = emailTo.getText().toString();
        String cc = emailCc.getText().toString();
        String bcc = emailBcc.getText().toString();
        String subject = emailSubject.getText().toString();
        String compose = emailCompose.getText().toString();

        outState.putString(EXTRA_FROM, from);
        outState.putString(EXTRA_TO, to);
        outState.putString(EXTRA_CC, cc);
        outState.putString(EXTRA_BCC, bcc);
        outState.putString(EXTRA_SUBJECT, subject);
        outState.putString(EXTRA_COMPOSE, compose);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedState)
    {

        EditText emailFrom =(EditText) findViewById(R.id.editEmailFrom);
        EditText emailTo =(EditText) findViewById(R.id.editEmailTo);
        EditText emailCc =(EditText) findViewById(R.id.editEmailCc);
        EditText emailBcc =(EditText) findViewById(R.id.editEmailBcc);
        EditText emailSubject =(EditText) findViewById(R.id.editEmailSubject);
        EditText emailCompose =(EditText) findViewById(R.id.editEmailCompose);

        String from = savedState.getString(EXTRA_FROM);
        String to = savedState.getString(EXTRA_TO);
        String cc = savedState.getString(EXTRA_CC);
        String bcc = savedState.getString(EXTRA_BCC);
        String subject = savedState.getString(EXTRA_SUBJECT);
        String compose = savedState.getString(EXTRA_COMPOSE);

        emailFrom.setText(from);
        emailTo.setText(to);
        emailCc.setText(cc);
        emailBcc.setText(bcc);
        emailSubject.setText(subject);
        emailCompose.setText(compose);
    }

    public void emailSend (View sendButton) 
    {
        Intent intent = new Intent(this,DisplayEmailActivity.class);
        EditText emailFrom =(EditText) findViewById(R.id.editEmailFrom);
        EditText emailTo =(EditText) findViewById(R.id.editEmailTo);
        EditText emailCc =(EditText) findViewById(R.id.editEmailCc);
        EditText emailBcc =(EditText) findViewById(R.id.editEmailBcc);
        EditText emailSubject =(EditText) findViewById(R.id.editEmailSubject);
        EditText emailCompose =(EditText) findViewById(R.id.editEmailCompose);

        String from = emailFrom.getText().toString();
        String to = emailTo.getText().toString();
        String cc = emailCc.getText().toString();
        String bcc = emailBcc.getText().toString();
        String subject = emailSubject.getText().toString();
        String compose = emailCompose.getText().toString();

        intent.putExtra(EXTRA_FROM,from);
        intent.putExtra(EXTRA_TO,to);
        intent.putExtra(EXTRA_CC,cc);
        intent.putExtra(EXTRA_BCC,bcc);
        intent.putExtra(EXTRA_SUBJECT,subject);
        intent.putExtra(EXTRA_COMPOSE,compose);

        startActivity(intent);
    }
}
4

2 に答える 2

0

アプリケーションを強制終了して再起動すると、データが表示されません。

もちろん。アプリケーションを強制終了すると (タスク キラーなど)、保存されたインスタンスの状態は失われます。このシナリオを処理するには、データをファイルやデータベースなどに永続化する必要があります。

動作するかどうかをテストするonSaveInstanceState()には、画面を回転させるか、その他の種類の構成変更を行います。

于 2012-10-10T17:52:40.583 に答える
0

いくつかの項目を保存するには、SharedPreferences を使用するのが最善の方法です。

この投稿でしばらく前に例を挙げました: SharedPreferences

幸運を。

于 2012-10-10T18:25:58.937 に答える