0
I made a layout of a Textview + Switch button. How do I set the onClick method in prefs_activity.xml and receive notification in the class implementation?
layout/preference_switch.xml
<TextView
android:id="@+id/switchLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:textSize="14sp"
android:layout_gravity="left|center"/>
<Switch
android:id="@+id/switchButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center"/>
values/lib_attr.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="lib">
<attr name="title" format="string"/>
<attr name="label" format="string"/>
<attr name="summary" format="string"/>
</declare-styleable>
</resources>
Cpreferenceswitch.java
public class CPreferenceSwitch extends FrameLayout
{
private TypedArray m_params;
private TextView m_label;
private Switch m_switch;
public CPreferenceSwitch(Context context)
{
this(context,null);
}
public CPreferenceSwitch(Context context, AttributeSet attrs)
{
this(context, attrs, 0);
}
public CPreferenceSwitch(Context context, AttributeSet attrs, int defStyleAttr)
{
super(context, attrs, defStyleAttr);
m_params = context.obtainStyledAttributes(attrs,R.styleable.lib);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.preference_switch, this);
}
@Override
protected void onFinishInflate()
{
super.onFinishInflate();
m_label = (TextView) findViewById(R.id.switchLabel);
m_switch = (Switch) findViewById(R.id.switchButton);
m_label.setText(m_params.getString(R.styleable.lib_label));
m_params.recycle();
}
}
prefs_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:lib="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<lib.client.control.CPreferenceCategory
style="@style/preference_category"
lib:title="Receber notificação"
lib:summary="Notificações enviadas para a área de menu do aplicativo">
</lib.client.control.CPreferenceCategory>
<lib.client.control.CPreferenceSwitch
style="@style/preference_switch"
--------->
---------> android:onClick="swichClick" <------------
--------->
lib:label="Sugestão de categoria">
</lib.client.control.CPreferenceSwitch>
<lib.client.control.CPreferenceSwitch
style="@style/preference_switch"
lib:label="Sugestão de indicador">
</lib.client.control.CPreferenceSwitch>
<lib.client.control.CPreferenceSwitch
style="@style/preference_switch"
lib:label="Sugestão de melhoria no aplicativo">
</lib.client.control.CPreferenceSwitch>
<lib.client.control.CPreferenceSwitch
style="@style/preference_switch"
lib:label="Solicitação de ajuda">
</lib.client.control.CPreferenceSwitch>
<lib.client.control.CPreferenceSwitch
style="@style/preference_switch"
lib:label="Relato de erro">
</lib.client.control.CPreferenceSwitch>
</LinearLayout>
</ScrollView>
Print screen
Why don’t you use the API Preference Android makes available to manage app settings .
– ramaral
I couldn’t make it work, see my post - http://answall.com/questions/156018/android-erro-must-specify-preferencetheme-in-theme
– Edson Santos