2014-04-02 5 views
10

Google's document के अनुसार, ऊपर बटन दिखाने के लिए getActionBar().setDisplayHomeAsUpEnabled(true) आवश्यक है। मैंने एक्लिप्स में विज़ार्ड का उपयोग करके एक नंगे हड्डी गतिविधि बनाई और इसकी मूल गतिविधि निर्दिष्ट की। मुझे स्वचालित रूप से जेनरेट किए गए कोड में कोई getActionBar().setDisplayHomeAsUpEnabled(true) नहीं मिला, लेकिन यह गतिविधि तब शुरू होती है जब यह गतिविधि शुरू होती है और यह अपेक्षा के अनुसार काम करता है। क्या कोई इस पर कुछ प्रकाश डाल सकता है?सेट बटन के बिना अप बटन क्यों मौजूद है HomeAsUpEnabled()?

public class FooActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_foo); 

      //more code...  
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
      //more code... 
    } 

    @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(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      //more code... 
      return rootView; 
     } 
    } 

} 

उत्तर

13

जब आप अपने AndroidManifest, Acitivtywill check for that and automatically enable the "up" affordance if it's present.

+0

तत्काल उत्तर के लिए बहुत बहुत धन्यवाद। क्या इसका मतलब यह है कि दस्तावेज़ गलत है (यानी getActionBar()। SetDisplayHomeAsUpEnabled (true) अनावश्यक है), या ऐसी परिस्थितियां हैं जहां ऊपर बटन दिखाने के लिए ऐसी कॉल की आवश्यकता है? – Hong

+0

मैं इसे "गलत" नहीं कहूंगा, लेकिन शायद इसे थोड़ा और स्पष्ट होने के लिए पुनः लिखा जा सकता है। यह राज्य करता है "ऐसा करने से सिस्टम को 'पैरेंट एक्टिविटीनाम' जोड़ने के बारे में नेविगेशन पैटर्न जैसे ऊपर ..." की सुविधा मिलती है। लेकिन आपके मामले में 'ActionBar.setDisplayHomeAsUpEnabled' को कॉल करने के लिए अनावश्यक है। – adneal

+0

क्या कोई ऐसी परिस्थिति है जहां setDisplayHomeAsUpEnabled की आवश्यकता है? मैं यह पूछ रहा हूं क्योंकि मैं यह सुनिश्चित करना चाहता हूं कि अभिभावक एक्टिविटी नाम जोड़ना मुझे एंड्रॉइड उपकरणों के हजारों विभिन्न मॉडलों के लिए अप बटन करने के लिए करना है। मैंने दस्तावेज़ को कई बार पढ़ा है, और यह मुझे इंप्रेशन देता है कि अभिभावक एक्टिविटीनाम जोड़ना "पहला कदम" है (दस्तावेज़ से उद्धृत), और दूसरा चरण setDisplayHomeAsUpEnabled को कॉल कर रहा है। ऐसा लगता है कि एक तीसरा कदम भी है। मुझे दस्तावेज़ की सीमित समझ के लिए खेद है। – Hong

3

मैं नीचे सभी संभव संयोजनों और उनके परिणामों वर्णित में एक parentActivityName निर्दिष्ट करें:

  1. आप दोनों android:parentActivityName=".MyActivity है और इस getActionBar().setDisplayHomeAsUpEnabled(true); - वापस बटन दिखाई देता है और यह काम करता हैं;
  2. आपके पास केवल यह android:parentActivityName=".MyActivity है - बैक बटन दिखाई देता है और यह ऊपर जैसा ही काम करता है;
  3. आपके पास केवल यह getActionBar().setDisplayHomeAsUpEnabled(true); है, - बैक बटन दिखाई देता है लेकिन उस पर क्लिक करना कहीं भी नहीं जाता है;
  4. आपने इस getActionBar().setDisplayHomeAsUpEnabled(false); में पैरामीटर को गलत पर सेट किया है, भले ही आपके पास मेनिफेस्ट में यह android:parentActivityName=".MyActivity है, बैक बटन दिखाई नहीं देता है।

इस तरह यह मेरे दोस्त को काम करता है।

संबंधित मुद्दे