2014-12-28 16 views
5

Yukarı Yönlendirmeyi uygulamak için bu eğiticiyi - http://developer.android.com/training/implementing-navigation/ancestral.html - uyguluyordum. Telefondaki Geri düğmesine basarken kullanıcıyla aynıdır, ancak 'Yukarı' düğmesine basıldığında onBackPressed() yöntemi yanmaz. Öğreticide, onOptionsItemSelected() yönteminde R.id.home öğesini yakaladığınızı gösterirler. Bu web sitesi - http://developer.android.com/reference/android/R.id.html - R.id.home değerinin 16908332 değerine eşit olduğunu, ancak benim uygulamasında olmadığını gösterir. Aşağıdaki kodda R.id.home kullanırsam başarısız olur. 16908332'de sabit kodla çalışırsam çalışır. Benim için R.id.home 21312330724 değerlendirir. Sayfaya göre, tüm R.id değerleri 1690 başlar. Sabit bir değer için sabit kodlama nefret ediyorum, ama başka ne emin değilim yap. Bu, yoldaki sorunlara neden olabilir mi? Yanlış bir şey mi yapıyorum? Bu bir hata mı?R.id.home öğesinin değerlendirilmesi

Greg

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    //noinspection SimplifiableIfStatement 
    if (id == R.id.home) {//16908332 
     Intent upIntent = NavUtils.getParentActivityIntent(this); 

     upIntent.putExtra(CAT_ID, CatID); 
     upIntent.putExtra(USER_ID, UserID); 
     upIntent.putExtra(LIST_ID, ListID); 
     setResult(RESULT_OK, upIntent); 
     NavUtils.navigateUpTo(this, upIntent); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+5

Bildirimi .home değişkeni, eğer varsa. Sınıfınızın üst kısmındaki R import ad alanınızı kontrol edin. Burada özel R içeriğiniz varsa, kimliğinizi kesinlikle android.id.home olarak tanımlamanız gerekir. – joao2fast4u

+1

Teşekkürler. Ne çalıştı android.R.id.home idi. Bu, neredeyse hiçbir özelliğe sahip olmayan, özellikle de hiçbir özel R.id.home değişkeni olmayan yeni bir aktivitedir. Tek ithalat içeriği.Intent, support.v4.app.NavUtils, support.v7.app.ActionBarActivity, os.Bundle, view.Menu, view.MenuItem, widget.Toast – user1091524

cevap

25

Sen android birine karşılaştırmak gerekir: android.id.home` değil özel R.id `için id karşılaştırmanız gerekir

if (id == android.R.id.home){ 
    ... 
} 
İlgili konular