Error: appWidgetId (EXTRA_APPWIDGET_ID) was not returned from the \widget configuration activity.
public class WidgetConfigure extends Activity {
private int widgetID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v("Lifecycle", "WidgetConfigure.onCreate");
setContentView(R.layout.widget_configure);
widgetID = this.getIntent().getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
setResult(RESULT_CANCELED, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID));
}
public void onButtonClicked(View view) {
Log.v("Lifecycle", "WidgetConfigure.onButtonClicked");
if (((RadioButton) this.findViewById(RefreshStrategy.SYSTEM)).isChecked()) {
WidgetProvider.configure(widgetID, true);
} else if (((RadioButton) this.findViewById(RefreshStrategy.USER)).isChecked()) {
WidgetProvider.configure(widgetID, false);
}
setResult(RESULT_OK, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID));
finish();
}
}
理论上RESULT_OK
应该在按下活动按钮后发送,RESULT_CANCELED
在任何其他情况下发送,但是当按下设备上的物理按钮HOME时不会发生。
如何解决此问题?
答案 0 :(得分:1)
这不是代码中的问题 - 这是正常的标准Android行为。 (也许是一个错误?)
我无法找到它,但是如果您尝试添加需要配置的Google小部件,然后按HOME,则会看到小部件未添加。在某种程度上,我们可以将HOME键视为CANCEL按钮。
我今天大部分时间都在考虑我自己的代码中有一个错误,并且正在寻找解决方法。
如果有的话,我相信这可能是框架中的一个错误,因为根本没有提供结果。另外,如果我从配置活动中启动一个新的Activity
然后从那里退出,我会遇到类似的失败。
FWIW我在Galaxy Nexus 4.2.1上收到错误消息;但是在Nexus 7 4.4.2上没有显示错误,但行为是一样的。
更新根据Dianne Hackborn的说法,这是预期的行为,至少从用户的角度来看:
将要提供的应用小部件的正常体验 配置UI是按下或从家里取消的 另外。
因此,作为开发人员,这可能看起来很奇怪,但作为一个用户,它最终都很好。