ActionBar बैक बटन को सक्षम करने के लिए आपको स्पष्ट रूप से अपनी गतिविधि में ActionBar की आवश्यकता है। यह आपके द्वारा उपयोग की जा रही थीम द्वारा सेट किया गया है। आप अपनी गतिविधि के लिए विषय सेट कर सकते हैं AndroidManfiest.xml
। यदि आप उदाहरण के लिए @android:style/Theme.NoTitleBar
विषय का उपयोग कर रहे हैं , तो आप एक ActionBar नहीं है। इस स्थिति में कॉल getActionBar()
निरस्त हो जाएगी। तो सुनिश्चित करें कि आपके पास पहले एक ActionBar है।
अगला कदम android:parentActivityName
उस गतिविधि को सेट करना है जिसे आप बैक बटन दबाने पर नेविगेट करना चाहते हैं। इसमें भी काम किया जाना चाहिए AndroidManifest.xml
।
अब आप onCreate
अपने "बच्चे" गतिविधि की विधि में बैक बटन को सक्षम कर सकते हैं ।
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
अब आपको बैक बटन के लिए तर्क को लागू करना चाहिए। आप बस onOptionsItemSelected
अपने "बच्चे" गतिविधि में विधि को ओवरराइड करते हैं और बैक बटन की आईडी की जांच करते हैं जो है android.R.id.home
।
अब आप विधि सक्रिय कर सकता है NavUtils.navigateUpFromSameTask(this);
, लेकिन आपके द्वारा निर्दिष्ट नहीं जानता कि android:parentActivityName
आप में AndroidManifest.xml
यह अपने app दुर्घटना होगा।
कभी-कभी यही आप चाहते हैं क्योंकि यह आपको याद दिला रहा है कि आप "कुछ" भूल गए हैं। इसलिए यदि आप इसे रोकना चाहते हैं, तो आप जांच सकते हैं कि क्या आपकी गतिविधि में getParentActivityIntent()
विधि का उपयोग करने वाले माता-पिता हैं । यदि यह शून्य है, तो आपने अभिभावक को निर्दिष्ट नहीं किया है।
इस मामले में आप उस onBackPressed()
विधि को आग लगा सकते हैं जो मूल रूप से वैसा ही करती है जैसे कि उपयोगकर्ता डिवाइस पर बैक बटन दबाएगा। एक अच्छा कार्यान्वयन जो आपके ऐप को कभी भी क्रैश नहीं करेगा:
@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);
}
}
कृपया ध्यान दें कि उपयोगकर्ता जो एनीमेशन देखता है, वह अलग है NavUtils.navigateUpFromSameTask(this);
और onBackPressed()
।
यह आप पर निर्भर है कि आप कौन सी सड़क लेते हैं, लेकिन मैंने समाधान को उपयोगी पाया, खासकर यदि आप अपनी सभी गतिविधियों के लिए आधार वर्ग का उपयोग करते हैं।
getActionBar().setDisplayHomeAsUpEnabled(true);
onCreate में औरswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}
मेंonOptionsItemSelected
? दोनों ServicesViewActivity में