我在PreferenceScreen中添加了两个TextViews和一个按钮,并带有很多CheckboxPreference,如下所示。 Picture 当我按下按钮时,我想禁用所有CheckboxPreference并更新metricsChoose textview。但是,setText方法无法做到这一点。
clearAllItem
是按钮的onClick方法
public void clearAllItem(View view) {
metricsChooserTextView.setText("0 metric chosen");
Toast.makeText(this, "Clear all selected items", Toast.LENGTH_SHORT).show();
}
我的xml文件是这样的
<Preference
android:selectable="false"
android:layout="@layout/activity_setting">
</Preference>
<PreferenceCategory
android:key="emotion"
android:title="Emotion Category">
<CheckBoxPreference
android:defaultValue="true"
android:key="joy"
android:title="JOY"
android:summary="Enable or disable detecting joy">
</CheckBoxPreference>
<CheckBoxPreference
android:defaultValue="true"
android:key="anger"
android:title="ANGER"
android:summary="Enable or disable detecting anger">
</CheckBoxPreference>
<CheckBoxPreference
android:defaultValue="true"
android:key="fear"
android:title="FEAR"
android:summary="Enable or disable detecting fear">
</CheckBoxPreference>
<CheckBoxPreference
android:defaultValue="true"
android:key="disgust"
android:title="DISGUST"
android:summary="Enable or disable detecting disgust">
</CheckBoxPreference>
activity_setting布局如下:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:textSize="18sp"
android:text="@string/choose_metrics_message"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/clear_all"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:id="@+id/clear_all_button"
android:onClick="clearAllItem"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/clear_all_button"
android:textSize="18sp"
android:id="@+id/metrics_chooser_textview"
android:text="@string/metric_chooser_default_message"
android:layout_centerVertical="true"/>
</RelativeLayout>
<!-- Preference should place its actual preference widget here. -->
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</ListView>