2012-11-25 53 views
1

以下情形: 我的主屏幕上有3個相同的小部件。如果點擊了,則會啓動小部件配置活動。多個小部件:在小部件上啓動配置活動點擊

這是通過下面的代碼來實現:

Intent intent = new Intent(context, WidgetConfigurator.class); 
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); 
PendingIntent pendIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
remoteView.setOnClickPendingIntent(R.id.widget_linearlayout, pendIntent); 

的開展工作,但有一個問題:
1.小部件被點擊,窗口小部件的配置活動被打開
2.用戶點擊「返回」鍵,配置活動消失
3. Widget B被點擊,Widget B的配置活動打開
4.用戶點擊「返回」鍵
=>現在Widget的配置活動A顯示爲

我總是隻想要顯示「實際」配置活動(適合點擊的小部件)。我必須爲Intent/PendingIntent使用哪些設置?

THX任何幫助

回答

0

一種方式來獲得確保當前活動被關閉是調用完成()。一個Android應用程序像堆棧一樣構建,活動A開始,如果用戶回來,這個活動不會關閉。它只是躺在新開始的活動B下面。如果用戶回到活動B中,則會顯示活動A.我從來沒有嘗試過,但如果您在onBackPressed方法中調用finish,則當前活動將被關閉。爲此,請在您的活動中重寫onBackPressed。

2

似乎周圍有很多嘗試後,我發現現在對所有的Android版本,一個可行的解決方案:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); 
PendingIntent pendIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
remoteView.setOnClickPendingIntent(R.id.widget_linearlayout, pendIntent); 
3

改變你的懸而未決的意圖代碼,包括部件編號爲Android的重用意圖。我浪費了很多時間,在點擊發送了錯誤的意圖。

PendingIntent pendIntent = PendingIntent.getActivity(context, WIDGETID, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
相關問題