2012-06-25 11 views
13

मैं अपने मुख्य गतिविधि पर हूँ कहो और मैं एक नई गतिविधिजांचें कि एंड्रॉइड में बैक कुंजी दबाई गई है या नहीं?

MainActivity > NewActivity 

और NewActivity से मैं प्रेस वापस कुंजी

MainActivity < NewActivity 

मैं MainActivity चाहते कुछ करने के लिए अगर यह NewActivity के बाद प्रदर्शित किया जा रहा है शुरू बंद है, लेकिन जब MainActivity सामान्य रूप से चलाया जाता है, जैसे कि जब पहली बार एप्लिकेशन चलाया जाता है। यदि संभव है तो किस प्रकार, क्या कोई जानता है?

उत्तर

8

विचारों के एक जोड़े:

  • तुम बस MainActivity में एक ध्वज सेट कर सकते हैं जब यह ऊपर NewActivity सक्रिय करता है।
  • आप MainActivity से startActivityForResult फोन और एक परिणाम है, जो आप MainActivity.onActivityResult() जब NewActivity खत्म में प्राप्त होगा निर्धारित करने के लिए NewActivity के लिए व्यवस्था कर सकते हैं।
+0

धन्यवाद! मैंने startActivityForResult का उपयोग किया, बहुत अच्छा काम करता है! –

0

जब आप NewActivity प्रारंभ करते हैं तो आपको startActivityForResult का उपयोग करने और वैध requestId का उपयोग करने की आवश्यकता है। onActivityResult पर NewActivity समाप्त होने पर आपको वापस requestId पर वापस भेज दिया जाएगा।

16
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     Log.d(this.getClass().getName(), "back button pressed"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@Update। यदि आप न्यूएक्टिविटी समाप्त होने पर अधिसूचित होना चाहते हैं, तो आपको इसे प्रारंभिकता ForResult (इरादा, अनुरोध कोड) से शुरू करना होगा। फिर, आपको मुख्य गतिविधि पर एक्टिविटी रिसैट() पर ओवरराइड करना होगा। यहां अनुरोध कोड पैरामीटर देखें, यदि रिटर्न कोड सबमिट कोड के बराबर है (जब आप बच्चे सक्रियता शुरू करते हैं), तो अपना कोड करने के लिए कुछ कोड दें।

int MYCODE=1000; 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Result OK.d. 
    if (requestCode == MYCODE) { 
     // do something good 
    } 
} 
+0

क्या यह नहीं सुनेंगे कि बैक बटन दबाया गया है या नहीं? –

+0

यदि आप केवल बैक बटन सुनना चाहते हैं, तो पहले स्निप कोड का उपयोग करें। –

6

आप onBackPressed() NewActivity में विधि है जो जब वापस बटन दबाया जाता है की पहचान करेगा ओवरराइड कर सकते हैं। और फिर इसके बारे में मुख्य गतिविधि को सूचित करने के लिए, आप एक बंडल में एक बुलियन ध्वज भेज सकते हैं ताकि मेनएक्टिविटी का पता लगाया जा सके कि न्यूएक्टिविटी के बाद इसका खुलना है।

NewActivity में:

 @Override 
     public void onBackPressed() { 
       boolean fromNewActivity=true; 

     Intent mainIntent = new Intent(view.getContext(), MainActivity.class); 
     Bundle bundleObj = new Bundle(); 
     bundleObj.putString("fromNewActivity", Boolean.toString(fromNewActivity)); 
     mainIntent.putExtras(bundleObj); 
     startActivityForResult(mainIntent, 0); 
      } 
onCreate में

MainActivity में() विधि:

 Bundle extras = getIntent().getExtras(); 
     boolean fromNewActivity =Boolean.parseBoolean(extras.getString("fromNewActivity")); 

अब आप देख सकते हैं कि MainActivity NewActivity के बाद या नहीं खोला गया है।

8

मैं पहली विधि द्वारा गतिविधि में क्रिया पट्टी पर दबाए गए बैक बटन का पता लगाने के लिए नीचे दी गई विधि का प्रयास करता हूं और दूसरे का उपयोग मोबाइल हार्डवेयर बटन को वापस करने या गतिविधि बटन को मारने के लिए किया जाता है।

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

@Override 
public void onBackPressed() { 
    setResult(RESULT_CANCELED); 
    super.onBackPressed(); 
} 
संबंधित मुद्दे