【发布时间】:2015-04-03 05:34:17
【问题描述】:
我正在开发一个简单的便笺应用程序,但我在管理小部件时遇到了问题。
我创建了 WidgetProvider 类 (AppWidgetProvider) 和 EditWidget 类 (Activity) 用于编辑文本。
当我单击小部件并输入文本后,如何使用文本更新小部件时打开EditWidget 活动?
创建的每个小部件都有不同的文本,然后每个小部件都是唯一的。
开发此应用的最佳解决方案是什么?
我的代码是:
--- WidgetProvider ---
public class WidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Intent intent = new Intent(context, EditActivity.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.update, pendingIntent);
views.setTextViewText(R.id.update, "Click for insert text"
appWidgetManager.updateAppWidget(appWidgetId, views);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
--- 编辑活动 ---
public class EditActivity extends Activity {
EditText edt_txt;
int appWidgetId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_layout);
edt_txt = (EditText) findViewById(R.id.edt_txt);
Intent launchIntent = getIntent();
Bundle extras = launchIntent.getExtras();
appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.save) {
String s = String.valueOf(edt_txt.getText());
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this.getApplicationContext());
RemoteViews views = new RemoteViews(this.getPackageName(), R.layout.widget_layout);
Intent clickIntent = new Intent(this.getApplicationContext(), WidgetProvider.class);
clickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), appWidgetId, clickIntent, 0);
views.setOnClickPendingIntent(R.id.update, pendingIntent);
views.setTextViewText(R.id.update, s);
appWidgetManager.updateAppWidget(appWidgetId, views);
finish();
}
return super.onOptionsItemSelected(item);
}
}
【问题讨论】:
标签: android android-activity android-widget