.getPackageName(), R.layout.main);
views.setTextViewText(.TextView01, text);
views.setImageViewResource(.ImageView01, util.image[index]);
ComponentName widget = new ComponentName(update.this,
widgetProvider.class);
AppWidgetManager manager = AppWidgetManager
.getInstance(update.this);
manager.updateAppWidget(widget, views);
这里同样还是用到发RemoteViews 来接收值的变化,然后通过AppWidgetManager 这个桌面组件管理器去改新RemoteViews 。由于我们要时时刻保存用户记录的数据,这里只是用到了键值对保存。
下面贴出代码:
package com.terry;
import .Activity;
import widget.AppWidgetManager;
import android.content.ComponentName;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RemoteViews;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;
public class update extends Activity {
private EditText mEditText;
private Button mButton;
private Spinner mSpinner;
private int index = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.update);
mEditText = (EditText) findViewById(.EditText01);
mButton = (Button) findViewById(.Button01);
mSpinner = (Spinner) findViewById(.Spinner01);
final ImageView iv = (ImageView) findViewById(.ImageView01);
ArrayAdapter adpter = new ArrayAdapter(this,
android.R.layout.simple_spinner_dropdown_item, util.text);
adpter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adpter);
SharedPreferences settings = getSharedPreferences(“settinginfo”,
Activity.MODE_PRIVATE);
index = settings.getInt(“imageState”, 0);
mEditText.setText(settings.getString(“heart”, “”));
iv.setImageResource(util.image[index]);
mSpinner.setSelection(index);
mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
index = arg2;
iv.setImageResource(util.image[index]);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String text = mEditText.getText().toString();
if (text.equals(“”)) {
return;
}
SharedPreferences shared = getSharedPreferences(“settinginfo”,
Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putInt(“imageState”, index);
editor.putString(“heart”, text);
editor.commit();
RemoteViews views = new RemoteViews(update.this
.getPackageName(), R.layout.main);
views.setTextViewText(.TextView01, text);
views.setImageViewResource(.ImageView01, util.image[index]);
ComponentName widget = new ComponentName(update.this,
widgetProvider.class);
AppWidgetManager manager = AppWidgetManager
.getInstance(update.this);
manager.updateAppWidget(widget, views);
update.this.finish();
}
});
}
}
由于组件每创建一次都调用了一次updateAppWidget 这个方法,故此方法也必须去获取键值对
package com.terry;
import .Activity;
import .PendingIntent;
import widget.AppWidgetManager;
import widget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.widget.RemoteViews;