小部件中的 ListView 和按钮单击 [Android]
ListView and Button Click in Widget [Android]
我创建了一个 Widget
,它有一个 Button
,下面有一个 ListView
。单击按钮时,我想打开一个 Activity
,但它似乎不起作用,我不知道为什么。
这是我的 AppWidgetProvider
中的代码
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; ++i) {
RemoteViews remoteViews = updateWidgetListView(context,
appWidgetIds[i]);
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
Intent configIntent = new Intent(context, NewActivity.class);
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.btn_activity, configPendingIntent);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
private RemoteViews updateWidgetListView(Context context, int appWidgetId) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
Intent svcIntent = new Intent(context, WidgetService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
remoteViews.setRemoteAdapter(appWidgetId, R.id.listViewWidget,
svcIntent);
remoteViews.setEmptyView(R.id.listViewWidget, R.id.empty_view);
return remoteViews;
}
我认为这是因为我的 updateWidgetListView
,我尝试将 Intent 放在 updateWidgetListView
中,但单击按钮时它仍然不起作用。
提前谢谢你。
在我的 onUpdate
上,我在 iteration
之前初始化我的 widget_layout
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// initializing widget layout
RemoteViews rvBtn = new RemoteViews(context.getPackageName(),
R.layout.home_widget);
// register the button event
rvBtn.setOnClickPendingIntent(R.id. btn_activity,
buildButtonPendingIntent(context));
final int N = appWidgetIds.length;
for (int i = 0; i < N; ++i) {
//initialize another RemoteViews for ListView
RemoteViews remoteViews = updateWidgetListView(context,
appWidgetIds[i]);
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
然后创建一个 BroadcastReceiver
,我将在其中调用 Intent
并在我的 AndroidManifest
上添加 receiver
。
我创建了一个 Widget
,它有一个 Button
,下面有一个 ListView
。单击按钮时,我想打开一个 Activity
,但它似乎不起作用,我不知道为什么。
这是我的 AppWidgetProvider
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; ++i) {
RemoteViews remoteViews = updateWidgetListView(context,
appWidgetIds[i]);
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
Intent configIntent = new Intent(context, NewActivity.class);
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.btn_activity, configPendingIntent);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
private RemoteViews updateWidgetListView(Context context, int appWidgetId) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
Intent svcIntent = new Intent(context, WidgetService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
remoteViews.setRemoteAdapter(appWidgetId, R.id.listViewWidget,
svcIntent);
remoteViews.setEmptyView(R.id.listViewWidget, R.id.empty_view);
return remoteViews;
}
我认为这是因为我的 updateWidgetListView
,我尝试将 Intent 放在 updateWidgetListView
中,但单击按钮时它仍然不起作用。
提前谢谢你。
在我的 onUpdate
上,我在 iteration
widget_layout
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// initializing widget layout
RemoteViews rvBtn = new RemoteViews(context.getPackageName(),
R.layout.home_widget);
// register the button event
rvBtn.setOnClickPendingIntent(R.id. btn_activity,
buildButtonPendingIntent(context));
final int N = appWidgetIds.length;
for (int i = 0; i < N; ++i) {
//initialize another RemoteViews for ListView
RemoteViews remoteViews = updateWidgetListView(context,
appWidgetIds[i]);
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
然后创建一个 BroadcastReceiver
,我将在其中调用 Intent
并在我的 AndroidManifest
上添加 receiver
。