2015-09-03 6 views
1

Я хочу использовать Snackbar onSharedPreferenceChange() внутри моего PreferenceFragment, размещенного в Activity.Невозможно показать Snackbar from PreferenceFragment

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)); 
} 

Я не знаю, что передать как 'представление' в закусочной, чтобы показать это.

PS: Я пробовал пропустить экран предпочтений в закусочную, но не получилось. Заранее спасибо.

ответ

3

Попробуйте для просмотра ПОЛУЧИТЬ

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)); 
} 
+0

Спасибо вам так много. Ты спас свой день. –

0

View парам из Snackbar.make() означает вид, на котором Snackbar может найти родителя для отображения Snackbar на верхней части экрана

Snackbar будет пытаться найти родительское представление провести вид закусочной от значения, заданного для просмотра

Link

+0

Попробуйте передать компонент фрагмента как вид – Prachi