2010-08-24 37 views
7

Android 2.1'e karşı bir uygulama geliştirmem var ve geri düğmesini iptal etmek istiyorum. Burada örnek takip ettimAndroid - onBackPressed() çalışmıyor

:

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

Ve kod aşağıdaki gibidir:


@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; 
    } 

öncesi 2.x cihazlar üzerinde çalışır

ama gelmez 2.1 güncelleme-1 ile bir Hero üzerinde ve 2.2 ile bir Nexus One üzerinde çalışıyorum.

Örnekte eksik olduğum bir şey var mı? Ya da neden çalışmadığına işaret eden var mı?

Düğme düğmesine basılan düğmeyi bile alamıyorum.

cevap

11

Eğer onkeyup() kullanıyor musunuz? Android 2.x

Android 1.x

kullanın sadece onKeyDown() veya onBackPressed ()

4

Bazı hızlı arama, onKeyUp(): http://developer.android.com/sdk/android-2.0.html sırasında Geri aramayı yerleştirmenizi önerir. Denemeye deger. Aşağıdaki kod sitesinden doğrudan geçerli:

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

teşekkürler API itibaren mevcuttur seviye 5 –

0

Sen ebeveyn kurucular aramalısınız. onKeyDown() yöntemi çağrısında

super.onKeyDown(); 

ve ancak alışkanlık yukarıdaki API olarak benim 1.6 cihazda çalıştırmak artık 2.x cihazlar üzerinde çalışır onBackPressed()

super.onBackPressed(); 
İlgili konular