Ich habe CheckedTextView programmgesteuert der linearen Ansicht hinzugefügt. Bitte sehen Sie sich folgenden Code:Android CheckedTextView, wie die Ansicht aktualisiert wird
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);
Später im Code ich habe die checkedtextview wie unten zu aktualisieren:
checkedtextview.setCheckMarkDrawable(getDrawable(R.mipmap.check1));
checkedtextview.setChecked(true);
checkedtextview.setTextColor(Color.GREEN);
linearLayout.addView(checkedtextview);
Aber dies führt zu Absturz mit folgenden Protokoll:
D/Android Runtime (24818): VM herunterfahren E/AndroidRuntime (24818): FATALE AUSNAHME: Haupt E/AndroidRuntime (24818): Prozess: com.beispiel.ashwini.timapp, PID: 24818 E/AndroidRuntime (24818): java.lang. Illegaler Staat xception: Das angegebene Kind hat bereits einen Elternteil. Sie müssen zuerst removeView() für das übergeordnete Element des Kindes aufrufen.
Bitte schlagen Sie mir vor, wie kann ich die Ansicht aktualisieren?
Lassen Sie mich wissen, wenn die erste Variante nicht funktioniert. Vielleicht müssen Sie auch 'checkedtextview.invalidate()' anrufen –
Ich bin Anfänger auf Android. Wie kann ich auf checkedtextview verweisen? Kannst du das bitte mit dem Code-Snippet erklären? – ashkus
Sie haben es bereits, wie ich sehe. Es ist deine private Variable in deiner Klasse. Sobald Sie es am Anfang erstellt haben - Sie haben eine Referenz und müssen nicht jedes Mal neu erstellen, um zu aktualisieren. Sie können die Eigenschaften dieser Ansicht überall in Ihrer Klasse in Runtime ändern und vielleicht die Methode 'invalidate() 'aufrufen, um sie auf dem Bildschirm neu zu zeichnen. –