2015-09-03 35 views
1

我想在我的PreferenceFragment中使用Snackbar onSharedPreferenceChange(),它由一个Activity托管。无法显示来自PreferenceFragment的Snackbar

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:我尝试将PreferenceScreen传递给Snackbar,但没有解决。提前致谢。

回答

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

ViewSnackbar.make() PARAM指有关Snackbar可以找到父母在屏幕顶部显示Snackbar视图

小吃吧会设法找出一个父视图,从给定的值保持小吃吧的观点查看

Link

+0

尝试将您的片段组件作为视图传递 – Prachi

相关问题