1

編集テキストフィールドと追加ボタンを使用してアクティビティを設定しています。基本的に、ユーザーが編集テキストに変更を加えて[追加]をクリックすると、編集テキストフィールドを使用して新しいテキストビューが作成されます。さらに、画面またはアクティビティを離れた後でも、作成されたテキストビューを使用できるようにしたいです。私が抱えている問題は、[追加]をクリックすると、新しく作成されたテキストビューに毎回デフォルト値が表示され、アクティビティを終了すると、すべてのテキストビューが完全に失われることです。助言がありますか?

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.adddocnote);
    etDocNote = (EditText) findViewById(R.id.editDocNote);
    btnAdd1 = (Button) findViewById(R.id.btnAdd1);
    nLayout = (LinearLayout) findViewById(R.id.linearLayout);
    TextView tvNote = new TextView(this);
    tvNote.setText("");
    btnAdd1.setOnClickListener(onClick());

        etDocNote.setOnKeyListener(new View.OnKeyListener() {
           public boolean onKey(View v1, int keyCode1, KeyEvent event1) {
                if ((event1.getAction() == KeyEvent.ACTION_DOWN) &&
                        (keyCode1 == KeyEvent.KEYCODE_ENTER)) {
                      getSharedPreferences("myprefs", 0).edit().putString("etDocNote", etDocNote.getText().toString()).commit();
                      return true;
                }
                return false;
            }
        });
}

private OnClickListener onClick() {
    // TODO Auto-generated method stub
    return new OnClickListener(){

        public void onClick(View v) {
            // TODO Auto-generated method stub
            String newDocNote = getSharedPreferences("myprefs", 0).getString("etDocNote", "" );
            nLayout.addView(createNewTextView(newDocNote));
        }

    };
}
private TextView createNewTextView(String newText) {
    // TODO Auto-generated method stub

    LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    TextView tvNote = new TextView(this);
    tvNote.setLayoutParams(lparams);
    tvNote.setText(newText);
    return tvNote;
}

}

4

1 に答える 1

0

したがって、質問には2つの部分があります。

  1. editText からのテキストを使用して textView を正しく追加するにはどうすればよいですか。現在、タイミングの問題があります。誰かがキーを押したときのテキストを共有設定に保存しようとしています。追加ボタンをクリックすると editText の内容を取得できるため、これは必要ありません。

setOnKeyListener を削除し、onClick() 関数を次のように変更します。

return new OnClickListener(){

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

        String value = etDocNote.getText().toString();

        nLayout.addView(createNewTextView(value));

        // Save to shared preferences
       getSharedPreferences("myprefs", 0).edit().putString("etDocNote", value).commit();
    }

};
  1. アクティビティに戻ったときにどのようにビューを復元しますか。テキストが共有設定に保存されるようになったためです。oncreate で、TextView を取得して復元する必要があります。
于 2012-10-15T01:10:24.760 に答える