बंद कर दिया है, मैं वास्तव में इरादा झंडे से परिचित नहीं हूं, इसलिए कृपया मेरे साथ भालू।इरादा झंडे - एक नया गतिविधि उदाहरण कैसे शुरू करें और दूसरों को
मैं एक ऐसा एप्लिकेशन कर रहा हूं जो व्यूपेजर में डेटाबेस से सामान प्रदर्शित करता हो। मेरे पास एक विजेट भी है जो समय-समय पर एक यादृच्छिक पंक्ति खींचता है और इसे प्रदर्शित करता है। अब, जब मैं उस पर क्लिक करता हूं, तो मुझे एक ऐसी गतिविधि में ले जाया जाता है जहां एक ही सामग्री प्रदर्शित होती है और अब मैं इस पर कार्रवाई कर सकता हूं।
सब कुछ काम करता है लेकिन जब मैं एक गतिविधि है पहले से चल रहा है और फिर विजेट पर क्लिक करें, यह एक नया उदाहरण बनाता है, लगता है क्योंकि जब मैं वापस बटन मैं अनुप्रयोग से बाहर निकलते नहीं कर रहा हूँ, लेकिन पिछले करने के लिए लिया हूँ दबाएँ उदाहरण या कुछ।
क्या गतिविधि का एक नया उदाहरण शुरू करने का कोई तरीका है और अगर कुछ पिछले उदाहरण झंडे का उपयोग करके उन्हें बंद कर रहे थे?
मैंने CLEAR_TOP के साथ खेला और वह सामान लेकिन मैं ईमानदारी से नहीं जानता कि मैं क्या कर रहा हूं।
धन्यवाद!
// संपादित
Intent.FLAG_ACTIVITY_CLEAR_TOP कुछ भी करने को नहीं लगता है। इरादा। FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP पिछले को शीर्ष पर लाने के लिए प्रतीत होता है और नए या किसी चीज़ को अनदेखा करता है। शायद मुझे दोबारा दोहराएं, मैं लॉन्चर आइकन से गतिविधि शुरू करता हूं, फिर मैं होम बटन दबाता हूं और विजेट पर क्लिक करता हूं और इसे एक नया उदाहरण लेना चाहिए जहां ViewPager.setCurrentItem सही पृष्ठ (विजेट में जैसा ही) सेट करता है। यदि पहले कोई मुख्य गतिविधि नहीं चल रही थी, तो सब कुछ ठीक है, लेकिन अगर यह चल रहा था, तो इसे खत्म करें।
MyWidgetProvider extends AppWidgetProvider
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.d("MainActivity", "MyWidgetProvider # onUpdate");
for (int i = 0; i < appWidgetIds.length; i++) {
int appWidgetId = appWidgetIds[i];
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("from_widget", true);
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.widget_container, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
मैंने कुछ कोड स्निपेट के साथ प्रश्न संपादित किया है, कृपया एक नज़र डालें। – urSus
अपना मैनिफेस्ट पोस्ट करें। –
जैसा कि मैंने कहा था, एक साथ CLEAR_TOP और SINGLE_TOP सेट करने से गतिविधि का एक ही उदाहरण उपयोग किया जाएगा और फ्रेमवर्क विजेट से इरादे से गुजरने पर 'न्यूनेंटेंट() 'पर कॉल करेगा। आप NEW_TASK को भी सेट करने का प्रयास कर सकते हैं। तो यदि आप 'setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | इरादा का उपयोग करते हैं।FLAG_ACTIVITY_CLEAR_TOP) 'इसे' मुख्य गतिविधि 'का एक नया उदाहरण बनाना चाहिए, अन्य सभी को बंद करना। –