2013-02-11 12 views
6

जिस ऐप को मैं विकसित कर रहा हूं वह एक गतिविधि है जो SherlockFragmentActivity तक फैली हुई है। गतिविधि में वरीयताओं को आसानी से जोड़ने के लिए मैं वरीयता एपीआई का उपयोग करना चाहता हूं। चूंकि मैं एपीआई स्तर 8 और ऊपर का समर्थन करना चाहता हूं, इसलिए मुझे कक्षा SherlockPreferenceActivity से गतिविधि का विस्तार करना है।एंड्रॉइड वरीयता सक्रियता और संवाद खंड

समस्या यह है कि गतिविधि को एक संवाद दिखाने की आवश्यकता है। संवाद SherlockDialogFragment फैलाता है। show() संवाद के तरीके को दो पैरामीटर की आवश्यकता है: FragmentManager ऑब्जेक्ट और String टैग।
FragmentManager ऑब्जेक्ट प्राप्त करने के लिए, मैं गतिविधि के getSupportFragmentManager() विधि को कॉल करता था। यह विधि SherlockPreferenceActivity से अनुपलब्ध है। मैं getFragmentManager() उपयोग करने के लिए कोशिश की, लेकिन ग्रहण का कहना है कि

प्रकार DialogFragment में विधि शो (FragmentManager, स्ट्रिंग) तर्कों (FragmentManager, स्ट्रिंग)

मैं कैसे दिखा सकते हैं के लिए लागू नहीं है SherlockPreferenceActivity से संवाद खंड?

+0

मैं एक ही समस्या है। हमें समर्थन पैकेज से FragmentManager प्राप्त करने की आवश्यकता है लेकिन SherlockPreferenceActivity में ऐसी कोई चीज़ नहीं है। = ( –

+1

मैंने इसे एक और तरीके से हल किया है। उसी पैकेज के तहत एक और गतिविधि बनाएं (इस नई गतिविधि को मैनिफेस्ट में जोड़ना याद रखें)। शेरलॉक प्रेफरेंस एक्टिविटी बढ़ाएं और इंटरफ़ेस को साझा करें SharePreferences.OnSharedPreferenceChangeListener। समझने के लिए एंड्रॉइड डेवलपर साइट को देखें इस गतिविधि को कैसे लिखें। उपयोगकर्ता प्राथमिकताओं को प्रबंधित करने के लिए इस गतिविधि का उपयोग करें। दूसरी गतिविधि से, जब उपयोगकर्ता सेटिंग बटन दबाता है, वांछित गतिविधि को किसी इरादे से शुरू करें। मुख्य गतिविधि से आप वरीयता प्रबंधक का उपयोग कर सेटिंग्स को पढ़ने में सक्षम होंगे। –

उत्तर

0

आपको PreferenceActivity का उपयोग करने के बजाय Shared Preferences का उपयोग करना चाहिए। इन संदर्भों को एक गतिविधि में विस्तारित करने के बजाय एक अलग सहायक वर्ग में घोषित करें। इससे आपको कस्टम लेआउट बनाने की लचीलापन मिलती है।

उदाहरण:

public class SharePrefManager { 
    // Shared Preferences 
    SharedPreferences pref; 

    // Editor for Shared preferences 
    Editor editor; 

    // Context 
    Context _context; 

    // Shared pref mode 
    int PRIVATE_MODE = 0; 

    // Sharedpref file name 
    private static final String PREF_NAME = "selfhelppref"; 

    //Your configurable fields 
    public static final String KEY_PREF1 = "pref1"; 
    public static final String KEY_PREF2 = "pref2"; 
    public static final String KEY_PREF3 = "pref3"; 


    public SharePrefManager(Context context){ 
     this._context = context; 
     pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
     editor = pref.edit(); 
    } 

    //Setter function for configurable field 
    public void setPref(String key, String value){ 
     editor.putString(key, value); 
    } 

    //Getter function for configurable field 
    public String getPref(String key){ 
      return editor.getString(key); 
    } 
} 

आपकी गतिविधि पर संदर्भित

SharePrefManager SM = new SharePrefManager(this); 
SM.setPref(SM.KEY_PREF1, "name"); 
String value = SM.getPref(SM.KEY_PREF1); 
0

SherlockDialogFragment.getSherlockActivity().getSupportFragmentManager() का उपयोग करें।

उदाहरण: mySherlockDialogFragment.show(mySherlockDialogFragment.getSherlockActivity().getSupportFragmentManager(), "my_tag");

संबंधित मुद्दे