2013-07-14 6 views
10

मेरे पास एक ऐप है जिसमें दो गतिविधियां हैं: मुख्य गतिविधि और सेटिंग्स सक्रियता। मेनएक्टिविटी में एक मेनू मेनू आइटम वाला मेनू है। जब यह मेनू आइटम क्लिक किया जाता है, तो यह सेटिंग के साथ सेटिंग एक्टिविटी लॉन्च करता है। गतिविधि शुरू होने के बाद, मैं ऊपरी बाएं कोने में बैक बटन पर क्लिक करता हूं और कुछ भी नहीं होता है। मैंने माना क्योंकि मैंने एक इरादे का उपयोग करके गतिविधि शुरू की है, गतिविधि स्टैक स्वचालित रूप से प्रबंधित किया जाएगा। मैं मुख्य गतिविधि में वापस जाना चाहता हूं। क्या मैं इस धारणा में गलत हूं?एंड्रॉइड बैक बटन पिछली गतिविधि पर वापस नहीं आता

public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    int itemID = item.getItemId(); 

    if(itemID == R.id.settings) { 
     Intent intent = new Intent(this, SettingsActivity.class); 
     startActivity(intent); 
    } 

    return true; 
} 

SettingsActivity

public class SettingsActivity extends PreferenceActivity { 

    public static final String TEST = "test"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 
+0

आप जोड़ना कृपया सकता है दो गतिविधियों का पूरा कोड? –

+0

आपका मतलब है कि आप एक्शनबार में ऐप आइकन पर क्लिक करते हैं और कुछ भी नहीं होता है? – patheticpat

+0

क्या आप मेनिफेस्ट भी जोड़ सकते हैं? आप केवल गतिविधियों 'टैग – Nativ

उत्तर

34

MainActivity.onMenuItemSelected अंदर अपने SettingsActivity तुम वापस जाने के लिए कार्यवाही बार के ऊपरी बाएं कोने पर वापस बटन को सक्षम करने के onOptionsItemSelected ओवरराइड करने के लिए की जरूरत है। यह स्वयं ही नहीं जानता कि क्लिक पर इसे करने की क्या ज़रूरत है। मामले के अंदर android.R.id.home आप बस finish() पर कॉल कर सकते हैं। यह आपकी वर्तमान गतिविधि को समाप्त कर देगा और आप MainActivity पर वापस जाएंगे जिसने इसे शुरू किया था। उदाहरण के लिए:

getActionBar().setDisplayHomeAsUpEnabled(true); 

setDisplayHomeAsUpEnabled()

It is to show the user that selecting home will return one level up rather than to the top level of the app.

के डॉक्स के अनुसार:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
      this.finish(); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

बस पूर्णता के लिए, घर बटन को सक्षम करने के लिए, आप अपने SettingsActivity की onCreate() में निम्नलिखित जोड़ सकते हैं

उम्मीद है कि यह मदद करता है।

+0

जोड़ सकते हैं, मुझे यह नहीं दिख रहा है। सेटिंग्स एक्टिविटी के ऑनऑप्शन इटैम में चयनित()। – nurettin

+0

यह मेरे मामले के लिए पूरी तरह से काम करता है जहां ऊपर बटन उस गतिविधि के लिए काम नहीं कर रहा था जिसे मैंने संदर्भ मेनू के माध्यम से नेविगेट किया था। – Kat

1

बस अपने OnCreate methord

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setHomeButtonEnabled(true); 

में इन पंक्तियों के जोड़ सकते हैं और अपनी पीठ बटन में कार्यक्षमता जोड़ने के लिए इस विधि को ओवरराइड:

@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; 
    } else if(id==android.R.id.home) 
    { 
    finish(); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

आशा है कि यह आप में मदद करता है

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