2010-06-09 8 views
14

ठीक है, इसलिए मैं एक एंड्रॉइड ऐप के साथ खेल रहा हूं।क्या मेरे पास केवल एक एंड्रॉइड गतिविधि चल सकती है जब एप्लिकेशन को पहली बार खोला जा सकता है?

9 0% उपयोग का मामला यह है कि उपयोगकर्ता सीधे जो भी खोज रहे हैं उसे ढूंढने के लिए प्राथमिक सूची स्क्रीन पर जाना चाहते हैं। मैं अपनी डिफ़ॉल्ट स्क्रीन के रूप में यही चाहता हूं।

पहली बार जब उपयोगकर्ता ऐप लोड करता है, तो उनकी सूची स्क्रीन उनके सामने किसी भी मूल्य से पहले कुछ कॉन्फ़िगरेशन आवश्यक है।

तो मेरा सवाल है कि मैं पहली बार एप खोले जाने पर कॉन्फ़िगरेशन गतिविधि को प्रदर्शित करने के बारे में कैसे जा सकता हूं, और फिर भविष्य के उद्घाटन के लिए सूची स्क्रीन।

मैं कॉन्फ़िगरेशन स्क्रीन पर डेमो बटन भी रखना चाहता हूं, इसलिए मुझे लगता है कि यह पहली बार है कि यह पता लगाने के अलावा, मैं विशेष रूप से यह जानना चाहता हूं कि उपयोगकर्ता ने पहली स्क्रीन के भीतर कुछ कॉन्फ़िगरेशन किए हैं या नहीं।

उत्तर

4

मुझे dweebsonduty की विधि पसंद है। ऐसा करने का एक समान तरीका एसडी कार्ड पर फ़ाइलों में उनकी कॉन्फ़िगरेशन जानकारी को सहेजना है। आपका ऐप उन फ़ाइलों की जांच करके और जानकारी लोड करके शुरू हो सकता है। अगर लोड सफल होता है, तो यह अगली गतिविधि पर चलता है, अगर यह इनपुट के लिए उपयोगकर्ता को संकेत देने के लिए उचित गतिविधि शुरू नहीं करता है।

मैंने यह वही किया है, लेकिन गतिविधियों को बदलने की बजाय मैं केवल तब तक विचारों को स्विच करता हूं जब तक कि मेरे पास आवश्यक सभी जानकारी न हो, और फिर आगे बढ़ें।

0

आप कॉन्फ़िगरेशन को कैसे संग्रहीत करेंगे?

यदि यह SQLlite में है तो आप केवल फर्स्ट्यूज नामक एक टेबल बना सकते हैं और वहां एक फ़ील्ड डाल सकते हैं जिसे हैबेन्यूज्ड कहा जाता है और इसे शून्य बना देता है। फिर जब ऐप का उपयोग किया जाता है तो आप वहां 1 डाल सकते हैं। फिर जब भी आपका ऐप लोड होता है तो आप इसे पढ़ सकते हैं और यदि वह फ़ील्ड = 1 है तो अपनी अगली गतिविधि पर जाएं।

+2

शायद उसे अतिरिक्त क्षेत्र की भी आवश्यकता नहीं है; वह सिर्फ यह देखने के लिए जांच सकता है कि आवश्यक कॉन्फ़िगरेशन जानकारी वहां है और यदि नहीं, तो गतिविधि को फेंक दें। यह वैसे भी अधिक विस्तार योग्य लगता है। – tloflin

+1

मैंने सेटिंग करने का प्रयास किया यह साझा प्राथमिकताओं के साथ है, हालांकि बैक बटन के खराब व्यवहार का कारण बनता है। मैंने स्टैक में हेरफेर करने का कोई तरीका देखा, लेकिन ऐसा लगता है कि यह उसी प्रकार की गतिविधियों के लिए करना चाहता है –

17

पहली बार उपयोगकर्ता ने ऐप लोड किया है, तो आप विवरण साझा कर सकते हैं कि उपयोगकर्ता ने SharePreferences में कॉन्फ़िगरेशन किया है या नहीं।

protected void storeSharedPrefs(String value) { 
     /* 
     * Storing in Shared Preferences 
     */ 
     editor.putString("first", value); 
     editor.commit(); //Commiting changes 
    } 

समय आवेदन पर चेक प्रत्येक, भरी हुई है इसकी पहली बार और विन्यास विवरण की जाँच SharedPreferences द्वारा सही तरीके से दर्ज किया गया है या

private boolean first_time_check() { 
     /* 
     * Checking Shared Preferences if the user had pressed 
     * the remember me button last time he logged in 
     * */ 
     String first = uPreferences.getString("first", null); 
     if((first == null)){ 
      return false; 
     } 
     else 
      return true; 
    } 
+4

getString की तुलना करने से भी बेहतर () में शून्य का उपयोग करना है() – Plutor

+7

स्ट्रिंग के बजाए एक बूलियन का उपयोग करना बेहतर है। 'editor.putBoolean (PREF_FIRST_LAUNCH, false);' और first_time_check में केवल 'वापसी वरीयता प्रबंधक .getDefaultSharedPreferences (getAplicationContext()) \t \t .getBoolean (PREF_FIRST_LAUNCH, सत्य); ' – Sylphe

+0

मैंने इस विधि का उपयोग किया। लेकिन मुझे बैक बटन होने में समस्याएं आ रही हैं। जब ऐप बैक बटन का उपयोग कर बाहर निकलता है, अगली बार जब यह शुरू होता है तो यह मानता है कि यह उसका पहला रन नहीं है। जो एंड्रॉइड ऐप के लिए नहीं चाहता है, प्रोग्रामर ऐप स्टार्ट के लिए अपने शुरुआती मूल्य पर सबकुछ सेट करने में सक्षम नहीं होता है। मुझे क्या करना चाहिए? – Tina

2

कई एप्लिकेशन वास्तव में SharedPreferences में वर्तमान संस्करण की दुकान, और के खिलाफ जांच यह एक अद्यतन स्थापित किया गया है के लिए। "क्या बदल गया है" पॉपअप प्राप्त करने का यह एक चालाक तरीका है, या यह सुनिश्चित करना कि कुछ सेटिंग्स सेट हो जाएं (मैं केवल बुलियन ध्वज रखने से सावधान रहूंगा क्योंकि यदि आप कभी भी एक अतिरिक्त सेटिंग जोड़ना चाहते हैं, तो आपको दूसरे ध्वज की आवश्यकता होगी और यह तीसरे के बाद गन्दा हो जाता है, आदि)।

1

स्ट्रिंग संस्करणवैल्यू = "v.1.0"; अंतिम स्ट्रिंग PREFS_NAME = "MyPrefsFile";

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

    if (settings.getBoolean(VersionValue, true)) { 
     //the app is being launched for first time, do something   
     NewDialogFragment newFragment = new NewDialogFragment(); 
     newFragment.show(getFragmentManager(), "New"); 
     // record the fact that the app has been started at least once 
     settings.edit().putBoolean(VersionValue, false).commit(); 
    } 

आप इसे इस तरह से कर सकता है और अभी भी एक ही परिणाम प्राप्त मैं इसे अपने एक छोटे से वैकल्पिक हल करने की कोशिश की है, तो यू पूरी तरह से कैसे करता है, तो अनुप्रयोग अद्यतन किया जाता है की जाँच करने के समझ में नहीं आता। इसके बजाय आप इस कोड के साथ बस स्ट्रिंग वर्जन वैल्यू को अपने वर्तमान ऐप संस्करण में बदल सकते हैं और एंड्रॉइड सोचेंगे कि ऐप एक नया पहली बार ऐप है और केवल तब तक आपके द्वारा लिखे गए कोड को प्रदर्शित करेगा जब तक कि आप अपने अगले अपडेट पर वर्जनवैल्यू नहीं बदल लेते।(:

+0

यहां तक ​​कि बेहतर! आप अपनी स्ट्रिंग.एक्सएमएल फ़ाइल और संदर्भ में एक स्ट्रिंग बना सकते हैं जो आपकी मुख्य गतिविधि.जावा फ़ाइल में आपके संस्करण संख्या और आपके संस्करण वैल्यू दोनों के लिए है। [ऑनकेरेट मैथोड में संस्करण वैल्यू/वर्जन वैल्यू और सामान को ऊपर रखना भी सुनिश्चित करें] –

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