我想在Activity托管的PreferenceFragment中使用Snackbar onSharedPreferenceChange()。
preference.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="ll_main">
<PreferenceCategory android:title="@string/push_notification">
<SwitchPreference android:title="@string/transectional_notification"
android:key="trans_not"
android:defaultValue="true"
android:summary="@string/get_notified_about_any_changes_related_to_your_transections"/>
<SwitchPreference android:title="@string/promotional_notification"
android:key="prom_not"
android:defaultValue="true"
android:summary="@string/get_notified_about_referalls"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/other_notifications">
<SwitchPreference android:title="@string/email_notifications"
android:defaultValue="true"
android:key="email_not" />
<SwitchPreference android:title="@string/sms_notifications"
android:defaultValue="true"
android:key="sms_not"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/recommendation_setting">
<com.til.recharger.widgets.PhoneEditTextPreference
android:title="@string/mobile_no"
android:inputType="number"
android:summary="8587035342"
android:key="mob_no_edit"/>
<ListPreference android:title="@string/operator"
android:summary="Airtel"
android:key="operator_list"/>
<ListPreference android:title="@string/circle"
android:summary="New Delhi"
android:key="circle_list"/>
<ListPreference
android:title="Plan type"
android:entries="@array/listentries"
android:entryValues="@array/listentries"
android:summary="Postpaid"
android:defaultValue="Prepaid"
android:key="plan_key"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/plan_info">
<com.til.recharger.widgets.NumberPickerPreference
android:title="@string/bill_cycle"
android:summary="2"
android:persistent="true"
android:key="bill_cycle_edit"/>
<com.til.recharger.widgets.CustomEditTextPreference
android:title="@string/monthly_data_limit"
android:summary="%s"
android:inputType="number"
android:key="monthly_limit_edit"/>
<ListPreference
android:title="@string/preffered_network_type"
android:entries="@array/mobiledataoptions"
android:entryValues="@array/mobiledatavalues"
android:summary="3G"
android:defaultValue="3G"
android:key="pref_data_list"/>
</PreferenceCategory>
</PreferenceScreen>
我显示小吃栏的功能是:
public void hideKeyWithError(final String error) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
AppUtils.hide_keyboard(getActivity());
Snackbar.make(view,error,Snackbar.LENGTH_LONG).show();
}
}, (300));
}
我不知道要传递什么,因为&#39;查看&#39;到小吃吧展示它。
PS:我尝试将PreferenceScreen传递给Snackbar,但没有成功。提前致谢。
答案 0 :(得分:5)
试试这个以获取视图
View view = getView();
所以代码是。
public void hideKeyWithError(final String error) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
View view = getView();
AppUtils.hide_keyboard(getActivity());
Snackbar.make(view,error,Snackbar.LENGTH_LONG).show();
}
}, (300));
}
答案 1 :(得分:0)
View
的{p} Snackbar.make()
参数表示Snackbar
可以找到父母在屏幕顶部显示Snackbar
的视图
Snackbar将尝试查找父视图,以便从给予视图的值中保存Snackbar的视图