2012-05-23 11 views
61

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

+0

भले ही आप वापस बटन दबाएं पिछली गतिविधि दिखाए जाएंगे ... – Tarun

+7

बस फिनिश() का उपयोग करें; –

+1

@ टारुन मैं सभी इतिहास को निकालने के लिए इस कोड का उपयोग कर रहा हूं ExitActivity.this.finish(); \t \t \t इरादा इरादा 1 = नया इरादा (ExitActivity.this, PinActivity.class); \t \t \t intent1.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); \t \t \t प्रारंभ गतिविधि (इरादा 1); – GoCrazy

उत्तर

96

onBackPressed() समर्थित है के बाद से: एपीआई स्तर 5

@Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
       onBackPressed(); 
      } 
    } 

@Override 
    public void onBackPressed() { 
     //this is only needed if you have specific things 
     //that you want to do when the user presses the back button. 
     /* your specific things...*/ 
     super.onBackPressed(); 
    } 
+1

इसका क्या मतलब है? आप लिख रहे हैं एंड्रॉइड डिफ़ॉल्ट रूप से क्या करता है। बैक बटन दबाए जाने पर यह बैकप्रेस() पर कॉल करता है .... क्या मैं सही हूँ? – drulabs

+3

@KKD अगर आपको 5 से नीचे एपीआई का समर्थन करना है तो आपको ऊपर की तरह उपयोग करना होगा .. http://android-developers.blogspot.co.uk/2009/12/back-and-other-hard-keys-three- stories.html – Tarun

+1

मैं अपनी टिप्पणी के लिए क्षमा चाहता हूं .... मैं केवल 8 के स्तर पर हूं। – drulabs

5

अपनी गतिविधि में इसे ओवरराइड करने के बाद onBackPressed पर कॉल करें।

+1

आपके लिए टिप्पणी के लिए धन्यवाद .. ऑनबैक दबाया गया है जब मैं बैक बटन दबाया जाता हूं तो कोड डाल सकता हूं .. मैं क्या चाहता हूं कि मैं बैक बटन को स्वचालित रूप से कॉल करना चाहता हूं ... क्या मैं – GoCrazy

+0

साफ़ करता हूं ... जहां भी आप कॉल करना चाहते हैं, जब भी आप कॉल करना चाहते हैं तो बस इस फ़ंक्शन को कॉल करें। आप इसे ध्वज या किसी भी घटना के आधार पर क्रिएट के अंदर कॉल कर सकते हैं। – drulabs

30

आप onBackPressed() ओवरराइड करने के लिए जरूरत नहीं है - यह पहले से ही कार्रवाई है कि आपके गतिविधि डिफ़ॉल्ट रूप से करना होगा उपयोगकर्ता वापस बटन दबाया जब के रूप में परिभाषित किया है। तो जब भी आप बैक बटन को "प्रोग्रामिक रूप से दबाएं" चाहते हैं तो बस onBackPressed() पर कॉल करें।

यह केवल finish() लिए परिणाम होगा हालांकि, कहा जा रहा है;)

मुझे लगता है कि तुम क्या वापस बटन करता है के साथ भ्रमित कर रहे हैं। डिफ़ॉल्ट रूप से, यह केवल finish() पर कॉल है, इसलिए यह वर्तमान गतिविधि से बाहर निकलता है। यदि आपके पास उस गतिविधि के पीछे कुछ है, तो वह स्क्रीन दिखाई देगी।

लॉगिन से अपनी गतिविधि लॉन्च करते समय आप क्या कर सकते हैं, एक CLEAR_TOP ध्वज जोड़ें ताकि जब आप बाहर निकलेंगे तो लॉगिन गतिविधि नहीं होगी।

+0

हाय, आपके उत्तर के लिए धन्यवाद .. यह अच्छा लगता है, लेकिन मैंने आपके दृष्टिकोण को फिर से उसी लॉगिन स्क्रीन में समाप्त करने की कोशिश की .. क्या आप इस से मेरी मदद करें ... – GoCrazy

+1

यह सही उत्तर है, लेकिन आपको इसे संपादित करना चाहिए क्योंकि यह हमेशा "समाप्त करने के लिए एक कॉल नहीं है") नहीं है। मेरे मामले में (और यह ठीक तरह से काम करता है जैसा कि मेरा इरादा है) यह टुकड़े के ढेर के पीछे पीछे जाने का एक तरीका है, और जब तक आप उस स्टैक पर पहले आइटम तक नहीं पहुंच जाते हैं तब तक फिनिश() को कॉल नहीं करते हैं। –

6

कभी-कभी बैकप्रेस() पर विधि को ओवरराइड करने के लिए उपयोगी होता है क्योंकि यदि आप टुकड़ों के साथ काम करते हैं और यदि आप बैकबटन को दबाते हैं तो वे पिछले खंड में वापस आते हैं।

+1

यह बिल्कुल सही है और अधिक अपवर्तनीय हकदार है। –

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