1

我有一个带有编辑文本字段和添加按钮的活动设置。本质上,当用户对 edittext 进行更改并点击 Add 时,应该使用 edittext 字段创建一个新的 textview。此外,我希望即使在我离开屏幕或活动后,创建的文本视图也可用。我遇到的问题是,当我单击添加时,每次新创建的文本视图中都会显示一个默认值,而当我离开活动时,所有文本视图都完全消失了。有什么建议么?

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

所以你的问题有两个部分:

  1. 如何正确添加 textView 与来自editText 的文本: 现在你有一个时间问题。当有人敲击键时,您正试图将文本保存在共享首选项中。这不是必需的,因为您可以在单击添加按钮时检索 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 中,您需要检索和恢复您的 TextViews。
于 2012-10-15T01:10:24.760 回答