2015-09-03 66 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

相關問題