2010-08-24 20 views
7

मेरे पास एंड्रॉइड 2.1 के खिलाफ एक एप्लिकेशन बिल्डिंग है और मैं बैक बटन को ओवरराइड करना चाहता हूं।एंड्रॉइड - ऑनबैकप्रेस() काम नहीं कर रहा

मैं उदाहरण यहाँ का पालन किया है:

http://android-developers.blogspot.com/2009_12_01_archive.html

और मेरे कोड इस प्रकार है के रूप में:


@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5 
       && keyCode == KeyEvent.KEYCODE_BACK 
       && event.getRepeatCount() == 0) { 
      Log.d("CDA", "onKeyDown Called"); 
      onBackPressed(); 
     } 

     return true; 
    } 

    @Override 
    public void onBackPressed() { 
    Log.d("CDA", "onBackPressed Called"); 
     Intent setIntent = new Intent(Intent.ACTION_MAIN); 
     setIntent.addCategory(Intent.CATEGORY_HOME); 
     setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(setIntent); 

     return; 
    } 

यह पूर्व 2.x उपकरणों पर काम करता है लेकिन नहीं करता है 2.2 अपडेट -1 के साथ एक हीरो पर काम नहीं करेगा और 2.2 के साथ नेक्सस वन होगा।

क्या मुझे कुछ उदाहरण से याद आ रही है? या कोई यह बता सकता है कि यह क्यों काम नहीं कर रहा है?

मैं भी बटन logcat में दबाया हो न।

उत्तर

11

आप onkeyup() का उपयोग कर रहे हैं?

उपयोग सिर्फ OnKeyDown() एंड्रॉयड 1.x में या onBackPressed() 2.x में

4

कुछ त्वरित खोज से पता चलता है आप onkeyup() के दौरान वापस अवरोधन जगह चाहिए: http://developer.android.com/sdk/android-2.0.html। यह आजमाने के काबिल है। निम्नलिखित कोड साइट से सीधे है:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK 
      && event.getRepeatCount() == 0) { 
     event.startTracking(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() 
      && !event.isCanceled()) { 
     // *** DO ACTION HERE *** 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 
+0

धन्यवाद है कि अब 2.x उपकरणों पर काम करता है, लेकिन यह अभ्यस्त ऊपर एपीआई के रूप में मेरे 1.6 डिवाइस पर चलने एपीआई से ही उपलब्ध है स्तर 5 पर –

0

आप माता-पिता कंस्ट्रक्टर्स फोन करना चाहिए।

onKeyDown() विधि कॉल में

super.onKeyDown(); 

और में onBackPressed()

super.onBackPressed();