我目前正在尝试实现允许操作窗口小部件的配置活动。
我查看了official document以及许多其他博客
但不了解如何通过配置活动更改窗口小部件的内容。
我想在targetName
中将字符串TextView
设置为R.layout.widget_layout
。
它说我需要通过配置活动更新小部件,
但如果我在配置活动中更新它,那么 WidgetProvider.java 中的onUpdate
代码会发生什么?这是令我最困惑的部分。
以下是我的代码的一部分:
Configure.java扩展ActionBarActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_configure);
setResult(RESULT_CANCELED);
context = this;
final Bundle extras = getIntent().getExtras();
if (extras != null) {
appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
final AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
final TextView textView = (TextView) findViewById(R.id.batteryText);
final int targetId;
db = new DatabaseHandler(this);
loadListView(); // not present here
registerForContextMenu(listView);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
targetName = serverArrayList.get(position).getName();
widgetManager.updateAppWidget(appWidgetId, views);
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
setResult(RESULT_OK, resultValue);
finish();
}
});
}
WidgetProvider.java扩展AppWidgetProvider
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i = 0; i < appWidgetIds.length; i++) {
int appWidgetId = appWidgetIds[i];
Intent intent = new Intent();
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
提前致谢。
答案 0 :(得分:0)
做更多的研究, 我发现了这个问题。 尽管标题有点误导, 我想我已经解决了,所以我将关闭这个问题。