我已通过编程将checkedTextView添加到linearLayout视图中。请看以下代码:

private LinearLayout linearLayout;
private CheckedTextView checkedtextview;
    linearLayout = (LinearLayout) findViewById(R.id.statusView);
    checkedtextview = new CheckedTextView(ScanStatus.this, null, android.R.attr.listChoiceIndicatorMultiple);
    checkedtextview.setText(R.string.applications);
    linearLayout.addView(checkedtextview);

稍后在代码中,我必须更新checkedtextview,如下所示:
checkedtextview.setCheckMarkDrawable(getDrawable(R.mipmap.check1));
checkedtextview.setChecked(true);
checkedtextview.setTextColor(Color.GREEN);
linearLayout.addView(checkedtextview);

但这会导致以下日志崩溃:
D/AndroidRuntime(24818):关闭虚拟机
e/androidruntime(24818):致命异常:main
e/androidruntime(24818):进程:com.example.ashwini.timapp,PID:24818
e/androidruntime(24818):java.lang.IllegalStateException:指定的子级已经有父级。必须先对子级的父级调用removeview()。
请建议我如何更新视图?

最佳答案

你有两个选择。首先,如果您一直有对checkedTextView的引用,则可以在不调用addview的情况下更新它:

    checkedtextview.setCheckMarkDrawable(getDrawable(R.mipmap.check1));
checkedtextview.setChecked(true);
checkedtextview.setTextColor(Color.GREEN);.

在第二种情况下,使用@坚持远方法提示回答:
    linearLayout.removeView(checkedtextview);
checkedtextview.setCheckMarkDrawable(getDrawable(R.mipmap.check1));
checkedtextview.setChecked(true);
checkedtextview.setTextColor(Color.GREEN);
linearLayout.addView(checkedtextview);

09-13 01:16