无法从 PreferenceFragment 显示 Snackbar
Unable to show Snackbar from PreferenceFragment
我想在 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));
}
我不知道要将什么作为 'view' 传递给 snackbar 以显示它。
PS :我尝试将 PreferenceScreen 传递给 Snackbar,但没有成功。提前致谢。
试试这个获取视图
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));
}
View
Snackbar.make()
的参数表示 Snackbar
可以找到要在屏幕顶部显示 Snackbar
的父视图
Snackbar will try and find a parent view to hold Snackbar's view from the value given to view
我想在 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));
}
我不知道要将什么作为 'view' 传递给 snackbar 以显示它。
PS :我尝试将 PreferenceScreen 传递给 Snackbar,但没有成功。提前致谢。
试试这个获取视图
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));
}
View
Snackbar.make()
的参数表示 Snackbar
可以找到要在屏幕顶部显示 Snackbar
的父视图
Snackbar will try and find a parent view to hold Snackbar's view from the value given to view