我有一个活动PlaceSearch.java
,它也恰好是我的Widget的Configure类。我正在开发一个天气小工具,所以我使用的是FrameLayout
,其中包含ImageButton
和LinearLayout
。 Please see this link
我想在用户点击PlaceSearch.java
上的widget
时打开home screen
。所以我使用了以下代码来实现它
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
System.out.println("entering onUpdate");
context.startService(new Intent(context, TimeService.class));
for(int id: appWidgetIds){
System.out.println(id);
RemoteViews view = new RemoteViews(context.getPackageName(),R.layout.activity_main);
Intent intent = new Intent(context,Preferences.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi =PendingIntent.getBroadcast(context, 0, intent, 0);
view.setOnClickPendingIntent(R.id.ibmainBackground, pi);
appWidgetManager.updateAppWidget(id, view);
}
}
但这可能不起作用,因为FrameLayout
导致LinearLayout
ImageButton
重叠,因此ImageButton
实际上从未被点击过。如果是这样,请提供正确的方式来打开活动。
答案 0 :(得分:0)
愚蠢的我不得不写PendingIntent.getActivity(....)
。 @shoe rat,现在工作正常。对于同时尝试从主屏幕打开活动的其他人,请将PendingIntent
添加到基本布局。因为对我而言,它是mainLayout
。