使用用户输入更新Android Widget

时间:2015-05-01 01:00:05

标签: java android

我目前正在尝试实现允许操作窗口小部件的配置活动。

我查看了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);
    }
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

做更多的研究, 我发现了这个问题。 尽管标题有点误导, 我想我已经解决了,所以我将关闭这个问题。

Android - Custom Widget doesnt update