Android:保存以编程方式添加的视图

时间:2014-03-24 18:43:47

标签: android android-view

当我的应用程序运行时,TextViews,Buttons和TableRows通过用户输入以编程方式添加。如何保存已添加的视图,以便在用户重新打开应用程序时它们会在那里?

添加按钮的示例:

public void submitPublicQuestion(View view) {
    AlertDialog.Builder question = new AlertDialog.Builder(this);

    question.setTitle("Submit Question");
    question.setMessage("Enter question: ");

    // Set an EditText view to get user input 
    final EditText input = new EditText(this);
    final View queue = this.findViewById(R.layout.activity_main_class);
    final Button newBtn = new Button(this);
    newBtn.setId((int) (Math.random() * 0xFFFFFFFF));
    question.setView(input);

    question.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            String value = input.getText().toString();

            newBtn.setText(value);
            newBtn.setMinWidth(550);
            newBtn.setTextSize(24);
            newBtn.setVisibility(View.VISIBLE);

            LinearLayout ll = (LinearLayout)findViewById(R.id.CSQuestionsLayout);
            LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

            newBtn.setLayoutParams(lp);

            ll.addView(newBtn);
        }
    });

    question.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {

        }
    });

    question.show();

}

1 个答案:

答案 0 :(得分:1)

您无法长时间保存实际 View个对象,因为它们不是SerializableParcelable有意义的方式。

我要做的是保存指示以重新创建视图。每次基于用户输入创建视图时,记录创建的视图类型以及与其关联的任何参数(文本,颜色,位置等)。打开应用程序时,根据路线列表检查应用程序的当前状态,并根据需要重新创建视图。