首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android CheckedTextView如何更新视图

Android CheckedTextView如何更新视图
EN

Stack Overflow用户
提问于 2017-03-13 13:57:30
回答 4查看 226关注 0票数 2

我已经以编程方式将CheckedTextView添加到了线性布局视图中。请看以下代码:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
checkedtextview.setCheckMarkDrawable(getDrawable(R.mipmap.check1));
checkedtextview.setChecked(true);
checkedtextview.setTextColor(Color.GREEN);
linearLayout.addView(checkedtextview);

但这会导致崩溃,日志如下:

D/AndroidRuntime( 24818 ):关闭VM E/AndroidRuntime(24818):致命异常: main E/AndroidRuntime(24818):Process: com.example.ashwini.timapp,PID: 24818 E/AndroidRuntime(24818):java.lang.IllegalStateException:指定的子进程已有父进程。您必须首先对子对象的父级调用removeView()。

请建议我如何更新视图?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-13 14:11:15

您有两个选择。首先,如果你一直都有一个对你的checkedtextview视图的引用--你可以在不调用addView的情况下更新它:

代码语言:javascript
复制
    checkedtextview.setCheckMarkDrawable(getDrawable(R.mipmap.check1));
checkedtextview.setChecked(true);
checkedtextview.setTextColor(Color.GREEN);.   

在第二种情况下,使用@坚持远方answer提供的提示:

代码语言:javascript
复制
    linearLayout.removeView(checkedtextview);
checkedtextview.setCheckMarkDrawable(getDrawable(R.mipmap.check1));
checkedtextview.setChecked(true); 
checkedtextview.setTextColor(Color.GREEN); 
linearLayout.addView(checkedtextview);
票数 1
EN

Stack Overflow用户

发布于 2017-03-13 14:04:08

我认为首先你需要移除视图,然后再更新它。

代码语言:javascript
复制
linearLayout.removeView(checkedtextview);
checkedtextview.setCheckMarkDrawable(getDrawable(R.mipmap.check1));
checkedtextview.setChecked(true); 
checkedtextview.setTextColor(Color.GREEN); 
linearLayout.addView(checkedtextview);
票数 2
EN

Stack Overflow用户

发布于 2017-03-13 14:06:08

您似乎正在尝试添加两次checkedtextview

要更改选中状态,可以从linearLayout获取视图,如下所示

在您的类中保留checkedtextview的引用或linearLayout.getChildAt(position),并随时根据需要更改状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42757393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档