2009-07-14 10 views
11

मुझे this person (जनवरी 2008 से) के समान सिर-स्क्रैचिंग पल का सामना करना पड़ रहा है जब मुझे एहसास हुआ कि एंड्रॉइड के प्रगति संवाद या स्पिनरों में कोई रद्द बटन नहीं है। यह अब जुलाई 200 9 है और मैंने अभी एंड्रॉइड के कपकेक संस्करण को स्थापित किया है। क्या यह बात बदल गई है? यदि नहीं, तो क्या आप संवाद में एक रद्द बटन जोड़ रहे हैं और आप इसे कैसे करते हैं?एंड्रॉइड के प्रगति संवाद में कोई रद्द बटन क्यों नहीं है?

उत्तर

11

मैं कोई एंड्रॉइड उपयोगकर्ता या डेवलपर नहीं हूं, लेकिन मुझे लगता है कि लिंक से जुड़े धागे में दिया गया उत्तर बहुत सभ्य है: हार्डवेयर सभी एंड्रॉइड डिवाइसों पर "बैक" कुंजी है। उपयोगकर्ताओं को वर्तमान में जो भी गतिविधि हो रही है, उससे पीछे वापस जाने के लिए जाना जाता है।

इस प्रकार, यूआई डिज़ाइनर को लगता है कि जीयूआई बैक/रद्द बटन शामिल करना अनावश्यक है। इसे DRY सिद्धांत के UI अनुप्रयोग के रूप में देखा जा सकता है; अगर कुछ करने का पहले से ही एक तरीका है, तो यह पर्याप्त है।

+1

ऐतिहासिक रूप से यूआई में इसे आम तौर पर एक ही कार्य को प्राप्त करने के लिए कई अनावश्यक तरीकों को प्रदान करने के लिए बेहतर माना जाता है। दिलचस्प दृष्टिकोण अगर ऐसा कारण है कि उन्होंने ऐसा किया है। –

+3

मेरी राय में बैक बटन ब्राउज़र बैक बटन के समानार्थी है। यह मेरे लिए सहज नहीं है (और यहां तक ​​कि मेरे कार्यालय में तकनीक भी) जो वापस दबाकर संवाद को खारिज कर देता है। –

+0

फिर आपको संवाद को बंद करने के लिए इंतजार करना होगा, या स्पिनर में पहले से चयनित आइटम का चयन करना होगा। आम तौर पर एक प्रगति संवाद से समर्थन करना कार्रवाई को रद्द नहीं करता है क्योंकि ऐप को किसी भी थ्रेड में लंबी चल रही प्रक्रिया करनी चाहिए। जब तक वे संवाद को बंद करने की तलाश नहीं कर रहे हैं, प्रक्रिया किसी भी समय पर पूरा होने जा रही है। –

2

हार्डवेयर कुंजी यहां जवाब है। मैं यूआई को डीआरवाई सिद्धांत को सामान्य बनाने के बारे में सावधान रहूंगा। ऐसे कई मामले हैं जहां आपको हेडिंग, बॉडी टेक्स्ट, रंगों और छवियों के माध्यम से बार-बार उपयोगकर्ता को हथौड़ा, हथौड़ा, हथौड़ा लगाने की आवश्यकता होती है।

उपयोगकर्ता यूआई को "उपन्यास" पढ़ते हैं जिस तरह से आप उपन्यास पढ़ते हैं। वे पढ़ना स्कैन करते हैं।

1

मैं अन्य ऐप्स के लिए बात नहीं कर सकता, लेकिन मेरे कुछ भी जो यूआई थ्रेड का इंतजार कर सकता है, एक अलग धागे में निष्पादित किया जाता है। सबसे ज्यादा मैं टाइटलबार में एक छोटी प्रगति स्पिनर दिखाऊंगा ताकि उपयोगकर्ता को पृष्ठभूमि में कुछ पता चल सके।

16

पूरे रद्द बटन के बारे में निश्चित नहीं है ... मैंने ऑनकैंक() विधि की रिपोर्टें ठीक से फायरिंग नहीं की हैं। मेरे समाधान में जब भी बटन दबाया जाता है तो वापस आने के लिए कॉल के साथ संवाद पर एक सामान्य बटन बनाना होता है।

private void createCancelProgressDialog(String title, String message, String buttonText) 
{ 
    cancelDialog = new ProgressDialog(this); 
    cancelDialog.setTitle(title); 
    cancelDialog.setMessage(message); 
    cancelDialog.setButton(buttonText, new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int which) 
     { 
      // Use either finish() or return() to either close the activity or just the dialog 
      return; 
     } 
    }); 
    cancelDialog.show(); 
} 

तो बस एक साधारण कॉल विधि कहीं और से अपनी गतिविधि

createCancelProgressDialog("Loading", "Please wait while activity is loading", "Cancel"); 

बल्कि सरल समाधान में उपयोग करते हैं, लेकिन यह काम कर देता है, यह भी सिर्फ नोट करने के लिए पोंछ चर कि cancelDialog एक गतिविधि है) , यदि आपको इसे कहीं और से कॉल करने की आवश्यकता नहीं है, तो आपको उस विधि में चर के दायरे को सीमित करने में सक्षम होना चाहिए।

0

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

डेवलपर के रूप में, इन संवादों को डिफ़ॉल्ट रूप से रद्द नहीं किया जा सकता है, यानी, आपको स्पष्ट रूप से उन्हें रद्द करने योग्य के रूप में सेट करना होगा।

यह समझ में आता है, क्योंकि उनका उद्देश्य यूआई थ्रेड के माध्यम से उपयोगकर्ता को सतर्क करना है, कि कुछ काम कहीं और चल रहा है जो यूआई थ्रेड को अद्यतन करने के लिए महत्वपूर्ण है, इससे पहले कि उपयोगकर्ता को एप्लिकेशन का उपयोग जारी रखना चाहिए ।

उदाहरण के लिए, एक खाली स्क्रीन पर कब्जा करने के लिए डेटा की एक सूची लाने के दौरान, बातचीत करने के लिए कुछ भी नहीं है, और उपयोगकर्ता को यह पता होना चाहिए कि कुछ चल रहा है, और उम्मीद करने के लिए कुछ भी उपलब्ध नहीं है जब तक यह प्रक्रिया पूरी नहीं हो जाती है।

हालांकि, इंटरनेट से डेटा पुनर्प्राप्ति जैसे मामलों हो सकते हैं, जहां प्रक्रिया "स्केची" है और कनेक्टिविटी के मुद्दों के कारण, आप अनुरोध पूरा करने में सक्षम नहीं हो सकते हैं, और यहां फंस गए हैं।

यह एक विकास के रूप में है जहां आप संवाद को रद्द करने में सक्षम करते हैं।

अब उपयोगकर्ता के रूप में, जो एंड्रॉइड के यूआई प्रतिमान को स्पष्ट रूप से समझता है, मुझे पता है कि अगर मैं पहले जो कर रहा था, उस पर वापस जाना चाहता हूं, या वर्तमान ऑपरेशन को "रद्द" करना चाहता हूं, तो मुझे पिछली कुंजी को हिट करना चाहिए।

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

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

क्रियाएँ और यूआई का प्रवाह होता है, आप गतिविधियों और यूआई "स्क्रीन" के माध्यम से बहते हैं जो "स्टैक्ड" होते हैं और बैक बटन अनिवार्य रूप से स्टैक से आखिरी चीज "पॉप" करता है जहां आप पहले थे। यदि आप इन गतिविधियों में से किसी एक के रूप में संवाद देखते हैं, तो आप इसे नीचे की ओर लौटने के लिए, या उसके पीछे की गतिविधि पर वापस जाने के लिए स्टैक के शीर्ष से पॉप करना चाहते हैं।

यदि किसी डेवलपर के पास एक संवाद है जिसे पीछे से रद्द नहीं किया जा सकता है, तो यह या तो डिज़ाइन द्वारा किया जा सकता है, जिसके लिए, मामले में, बहुत अच्छे कारण हो सकते हैं, या यह खराब विकास और पर्यवेक्षण पर है devloper का हिस्सा।

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