मैं एक गतिविधि है जो अधिक 4 या 5 विभिन्न गतिविधियों से खुला हो सकता है तो मैं मिल सकता है जो गतिविधि से मेरे वर्तमान गतिविधि कहा जाता है ...एंड्रॉइड में कौन सी वर्तमान गतिविधि खोली गई है, आखिरी गतिविधि को कैसे ढूंढें?
किसी भी विचार मेरी मदद करें ..
मैं एक गतिविधि है जो अधिक 4 या 5 विभिन्न गतिविधियों से खुला हो सकता है तो मैं मिल सकता है जो गतिविधि से मेरे वर्तमान गतिविधि कहा जाता है ...एंड्रॉइड में कौन सी वर्तमान गतिविधि खोली गई है, आखिरी गतिविधि को कैसे ढूंढें?
किसी भी विचार मेरी मदद करें ..
आप हो सकता है उस उद्देश्य को अतिरिक्त जोड़ना चाहते हैं जिसका उपयोग आप गतिविधि शुरू करने के लिए करते हैं ताकि यह इंगित किया जा सके कि इरादा कहां से आ रहा है या अनुरोध क्या है।
उदाहरण के लिए:
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);
एंड्रॉयड, इसके लिए एक समारोह है, तो आप का उपयोग startActivityForResult:
घटक नाम पिछला = this.getCallingActivity();
'getCallingActivity() 'विधि केवल तभी काम करेगी जब आपने' गतिविधि एक्टिविटीफॉर रिसेट 'के रूप में बाल गतिविधि शुरू की हो। यदि आप सामान्य रूप से बाल गतिविधि शुरू करेंगे यानी। 'startActivity() 'का उपयोग करके' getCallingActivity() 'विधि शून्य वापस आ जाएगी। इसका उल्लेख [एंड्रॉइड दस्तावेज़] (http://developer.android.com/reference/android/app/Activity.html#getCallingActivity()) में किया गया है। – Dharmendra
आपको अपना उत्तर संपादित करना चाहिए। – guydemossyrock
यह काम नहीं करता है –
different- विभिन्न गतिविधियों
उदाहरण के लिए आशय के लिए कुछ एक्स्ट्रा कलाकार रखो:
startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity"));
और के रूप में
string act = getIntent().getStringExtra("from");
वर्तमान गतिविधि में एक्स्ट्रा कलाकार मिल तो "क्रिया" होगा आपको कॉलिंग गतिविधि इंगित करता है।
एक 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;
}
मैं समाधान कर लिया है
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();
मैं इस आशय आशय = नए आशय (यह, OtherActivity.class) की तरह इस्तेमाल किया है; मंशा।putExtra ("कॉलर", getIntent()। getComponent()। getClassName()); प्रारंभ गतिविधि (इरादा); – Dharmendra
और फिर दूसरी गतिविधि में मैंने स्ट्रिंग क्लासनाम = getIntent() का उपयोग किया है। GetStringExtra ("कॉलर") और फिर कक्षा सी = क्लास .forName (className); इसलिए मैं इसे अपनी गंतव्य गतिविधि के रूप में उपयोग कर सकता हूं – Dharmendra