2011-03-29 9 views
34

मैं एक गतिविधि है जो अधिक 4 या 5 विभिन्न गतिविधियों से खुला हो सकता है तो मैं मिल सकता है जो गतिविधि से मेरे वर्तमान गतिविधि कहा जाता है ...एंड्रॉइड में कौन सी वर्तमान गतिविधि खोली गई है, आखिरी गतिविधि को कैसे ढूंढें?

किसी भी विचार मेरी मदद करें ..

उत्तर

40

आप हो सकता है उस उद्देश्य को अतिरिक्त जोड़ना चाहते हैं जिसका उपयोग आप गतिविधि शुरू करने के लिए करते हैं ताकि यह इंगित किया जा सके कि इरादा कहां से आ रहा है या अनुरोध क्या है।

उदाहरण के लिए:

Intent intent = new Intent(this, OtherActivity.class); 
intent.putExtra("caller", "MainActivity"); 
startActivity(intent); 

और फिर अपने OtherActivity "फोन करने वाले" अपने onCreate में पता लगा सकता है:

String caller  = getIntent().getStringExtra("caller"); 
Class callerClass = Class.forName(caller); 
+6

मैं इस आशय आशय = नए आशय (यह, OtherActivity.class) की तरह इस्तेमाल किया है; मंशा।putExtra ("कॉलर", getIntent()। getComponent()। getClassName()); प्रारंभ गतिविधि (इरादा); – Dharmendra

+4

और फिर दूसरी गतिविधि में मैंने स्ट्रिंग क्लासनाम = getIntent() का उपयोग किया है। GetStringExtra ("कॉलर") और फिर कक्षा सी = क्लास .forName (className); इसलिए मैं इसे अपनी गंतव्य गतिविधि के रूप में उपयोग कर सकता हूं – Dharmendra

13

एंड्रॉयड, इसके लिए एक समारोह है, तो आप का उपयोग startActivityForResult:

घटक नाम पिछला = this.getCallingActivity();

+34

'getCallingActivity() 'विधि केवल तभी काम करेगी जब आपने' गतिविधि एक्टिविटीफॉर रिसेट 'के रूप में बाल गतिविधि शुरू की हो। यदि आप सामान्य रूप से बाल गतिविधि शुरू करेंगे यानी। 'startActivity() 'का उपयोग करके' getCallingActivity() 'विधि शून्य वापस आ जाएगी। इसका उल्लेख [एंड्रॉइड दस्तावेज़] (http://developer.android.com/reference/android/app/Activity.html#getCallingActivity()) में किया गया है। – Dharmendra

+0

आपको अपना उत्तर संपादित करना चाहिए। – guydemossyrock

+0

यह काम नहीं करता है –

1

different- विभिन्न गतिविधियों

उदाहरण के लिए आशय के लिए कुछ एक्स्ट्रा कलाकार रखो:

startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity")); 

और के रूप में

string act = getIntent().getStringExtra("from"); 

वर्तमान गतिविधि में एक्स्ट्रा कलाकार मिल तो "क्रिया" होगा आपको कॉलिंग गतिविधि इंगित करता है।

1

एक Interfare बनाने और उसके बाद आशय में इन मूल्यों को पारित और बाल गतिविधि में मिलता है कोड के इस टुकड़े

public interface ActivityRefs { 
      public static final int ACTIVITY_1 = 1; 
      public static final int ACTIVITY_2 = 2; 
      public static final int ACTIVITY_3 = 3; 
} 

आशय बनाएं पर एक नज़र डालें और गतिविधि

कॉलिंग में इस तरह मान पास अपने क्रियाएँ के लिए मान डाल
intent.putExtra("callingActivity", ActivityRefs.ACTIVITY_1); 
तब कहा जाता है गतिविधि में

int callingActivityName = getIntent().getIntExtra("callingActivity", 0); 

     switch (callingActivityName) { 
     case ActivityConstants.ACTIVITY_1: 
      // Activity3 is started from Activity1 
      break; 
     case ActivityConstants.ACTIVITY_2: 
      // Activity3 is started from Activity2 
      break; 
     } 
0

मैं समाधान कर लिया है

String currentActivity; 
void onCreate(...){ 
... 
currentActivity = this.getClass().getName(); 
... 
} 

फिर अपने इरादे पर (अभी भी ActivityA में):

Intent intent = new Intent(this, ActivityA.class); 
intent.putExtra("from", currentActivity); 
startActivity(intent); 
this.finish(); 
यह, मेरे मामले में हम ActivityA ActivityB के प्रयास जारी हैं तो, मेरे कोड

ActivityA प्रोग्राम के रूप में वापस ActivityA में जाना चाहते हैं यहां अब

ActivityB पर:

Class fromClass; 
void onCreate(...){ 
... 
String String from = getActivity().getIntent().getStringExtra("from"); 
try { 
    fromClass = Class.forName(from); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} 
... 
} 

फिर अपने इरादे (अभी भी ActivityB में) वापस लिए पर ActivityA रहे हैं:

Intent intent = new Intent(this, fromClass); 
startActivity(intent); 
this.finish(); 
संबंधित मुद्दे