package visual.ui;import java.util.logging.Logger;import android.app.Activity; import android.appwidget.AppWidgetManager; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView;/** * * @author visual * */ public class WeatherConfigure extends Activity { private String[] mCitys; private String[] mCitys_py; private Spinner mSpinner; private String mCurrentCity = "mianyang"; private int mPosition = 0; private TextView mCityText; private boolean flag = false; int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // Set the result to CANCELED. This will cause the widget host to cancel // out of the widget placement if they press the back button. setResult(RESULT_CANCELED); setContentView(R.layout.weather_configure); // Find the widget id from the intent. Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) { mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } // If they gave us an intent without the widget id, just bail. if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { finish(); } mCitys = getResources().getStringArray(R.array.weather_city); mCitys_py = getResources().getStringArray(R.array.weather_citypy); mSpinner = (Spinner) findViewById(R.id.city_choose); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mCitys); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mSpinner.setAdapter(adapter); mSpinner.setSelection(mPosition); mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub if(!flag) { flag = true; return ; } mPosition = position; mCurrentCity = mCitys_py[position]; AppWidgetManager appWidgetManager = AppWidgetManager .getInstance(WeatherConfigure.this);
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;/**
*
* @author visual
*
*/
public class WeatherConfigure extends Activity { private String[] mCitys;
private String[] mCitys_py;
private Spinner mSpinner;
private String mCurrentCity = "mianyang";
private int mPosition = 0;
private TextView mCityText;
private boolean flag = false;
int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState); // Set the result to CANCELED. This will cause the widget host to cancel
// out of the widget placement if they press the back button.
setResult(RESULT_CANCELED); setContentView(R.layout.weather_configure); // Find the widget id from the intent.
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
} // If they gave us an intent without the widget id, just bail.
if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
finish();
} mCitys = getResources().getStringArray(R.array.weather_city);
mCitys_py = getResources().getStringArray(R.array.weather_citypy); mSpinner = (Spinner) findViewById(R.id.city_choose);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, mCitys); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
mSpinner.setSelection(mPosition);
mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
if(!flag) {
flag = true;
return ;
}
mPosition = position;
mCurrentCity = mCitys_py[position];
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(WeatherConfigure.this);
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK,resultValue);
finish();
} @Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub }
});
}
}
代码...package visual.ui;import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.util.Log;//AppWidgetProvider 是 BroadcastReceiver 的子类,本质是个 广播接收器,
//它专门用来接收来自 Widget组件的各种请求(用Intent传递过来),所以如果让我给他起名的话
//我会给他命名为AppWidgetReceiver,每一个Widget都要有一个AppWidgetProvider.public class HelloWidgetProvider extends AppWidgetProvider {
// 每个请求都会传递给onReceive方法,该方法根据Intent参数中的action类型
// 来决定自己处理还是分发给下面四个特殊的方法。
@Override
public void onReceive(Context context, Intent intent) {
Log.i("yao", "HelloWidgetProvider --> onReceive");
super.onReceive(context, intent);
} // 如果Widget自动更新时间到了、或者其他会导致Widget发生变化的事件发生,
// 或者说Intent的值是android.appwidget.action.APPWIDGET_UPDATE,那
// 么会调用onUpdate,下面三个方法类似
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// AppWidgetManager 顾名思义是AppWidget的管理器,appWidgetIds
// 桌面上所有的widget都会被分配一个唯一的ID标识,那么这个数组就是他们的列表
Log.i("yao", "HelloWidgetProvider --> onUpdate");
super.onUpdate(context, appWidgetManager, appWidgetIds);
} // 当一个App Widget从桌面上删除时调用
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
Log.i("yao", "HelloWidgetProvider --> onDeleted");
super.onDeleted(context, appWidgetIds);
} // 当这个App Widget第一次被放在桌面上时调用(同一个App Widget可以被放在桌面上多次,
// 所以会有这个说法)
@Override
public void onEnabled(Context context) {
Log.i("yao", "HelloWidgetProvider --> onEnabled");
super.onEnabled(context);
} // 当这个App Widget的最后一个实例被从桌面上移除时会调用该方法。
@Override
public void onDisabled(Context context) {
Log.i("yao", "HelloWidgetProvider --> onDisabled");
super.onDisabled(context);
}}