ActionBar geri düğmesini etkinleştirmek için Etkinliğinizde bir ActionBar'a ihtiyacınız vardır. Bu, kullandığınız tema tarafından ayarlanır. Etkinlikleriniz için temayı AndroidManfiest.xml. Örneğin @android:style/Theme.NoTitleBartemayı kullanıyorsanız , bir ActionBar'ınız yoktur. Bu durumda, çağrı getActionBar()null değerini döndürür. Bu yüzden önce bir ActionBar'ınız olduğundan emin olun.
Sonraki adım, android:parentActivityNamegeri düğmesine basarsanız gezinmek istediğiniz etkinliğe ayarlamaktır . Bu da yapılmalıdır AndroidManifest.xml.
Artık onCreate"alt" etkinliğinizin yönteminde geri düğmesini etkinleştirebilirsiniz .
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Şimdi geri düğmesi için mantığı uygulamalısınız. onOptionsItemSelected"Alt" etkinliğinizdeki yöntemi geçersiz kılar ve geri düğmesinin kimliğini kontrol edersiniz android.R.id.home.
Şimdi eğer yöntem belirtmediyseniz eğer NavUtils.navigateUpFromSameTask(this); AMA yöntemini ateş android:parentActivityNameedebilirsiniz AndroidManifest.xmlbu uygulama çökecektir.
Bazen istediğiniz şey budur çünkü size bir şeyleri unuttuğunuzu hatırlatır. Bunu önlemek istiyorsanız, getParentActivityIntent()yöntemi kullanarak etkinliğinizin bir ebeveyni olup olmadığını kontrol edebilirsiniz . Bu null değerini döndürürse, üst öğeyi belirtmediniz.
Bu durumda onBackPressed(), temel olarak kullanıcının cihazdaki geri düğmesine basmasıyla aynı yöntemi uygulayabilirsiniz. Uygulamanızı asla kilitlemeyen iyi bir uygulama:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getParentActivityIntent() == null) {
Log.i(TAG, "You have forgotten to specify the parentActivityName in the AndroidManifest!");
onBackPressed();
} else {
NavUtils.navigateUpFromSameTask(this);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Lütfen kullanıcının gördüğü animasyonun NavUtils.navigateUpFromSameTask(this);ve ile arasında farklı olduğunu unutmayın onBackPressed().
Hangi yolu seçtiğiniz size kalmış, ancak özellikle tüm aktiviteleriniz için bir temel sınıf kullanıyorsanız çözümü yararlı buldum.
getActionBar().setDisplayHomeAsUpEnabled(true);onCreate veswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}içindeonOptionsItemSelected? her ikisi de ServicesViewActivity