0

我有一個AppWidget與兩個Activities交互。第一個Activity要求用戶輸入一些文字。下面的代碼啓動該ActivityAppWidgetAppWidgets - 動態更新意圖額外內容

Intent promptIntent = new Intent(context, 
     TransparentPromptActivity.class); 
promptIntent.putExtra("appwidget_id", appWidgetId); 
promptIntent.putExtra("message", incomingMessage); 
PendingIntent promptPendingIntent = PendingIntent.getActivity(
     context, 0, promptIntent, 0); 
views.setOnClickPendingIntent(R.id.app_widget_tv, 
     promptPendingIntent); 

Activity發送輸入的消息回AppWidge t內顯示。然後有一個Activity共享信息,這裏是啓動該Activity代碼:

Intent shareIntent = new Intent(context, MainActivity.class); 
shareIntent.putExtra("message", incomingMessage); 
PendingIntent sharePendingIntent = PendingIntent.getActivity(
     context, 0, shareIntent, 0); 
views.setOnClickPendingIntent(R.id.app_widget_btn_share, 
     sharePendingIntent); 

正如你所看到的,該消息被存儲在本地incomingMessage變量。但是,當第二個Activity啓動時,incomingMessage爲空,表示在變量值更改時不會更新Intent內容。這種效果如何實現?提前致謝。

回答

0

這個效果如何實現?

getActivity()呼叫使用適當的標記,如FLAG_UPDATE_CURRENT,如果你是在同一個內核Intent創建PendingIntent(例如,對於相同的活動),並正在改變臨時演員。

也就是說,既然TransparentPromptActivityMainActivity是不一樣的活動,FLAG_UPDATE_CURRENT不會幫助。在第二種情況下,您的問題可能是incomingMessagenull