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 时,不会发生这种情况。
有什么想法如何解决这个问题吗?
这不是您的代码中的问题 - 这是正常的、标准的 Android 行为。 (也许是一个错误?)
我找不到它的记录,但如果您尝试添加需要配置的 Google 小部件,然后按 HOME,您会发现小部件未添加。在某种程度上,我们可以将 HOME 键视为取消按钮。
今天的大部分时间我都在想我自己的代码有一个错误,并寻找一种方法来修复它。
如果有的话,我相信这可能是框架中的一个错误,因为结果根本没有交付。此外,如果我启动一个新的,我也会遇到类似的失败Activity
从配置活动中退出,然后从那里退出。
FWIW 我在 Galaxy Nexus 4.2.1 上收到该错误消息;但在 Nexus 7 4.4.2 上,未显示错误,但行为是相同的。
Update:根据 Dianne Hackborn 的说法,这是预期的行为,至少从用户的角度来看是这样:
应用程序小部件的正常体验将提供
配置 UI 是按返回或主页将取消
添加。
- 应用程序小部件配置活动的行为与活动不同 https://stackoverflow.com/a/9946957/383414
因此,作为开发人员,这可能看起来很奇怪,但作为用户,最终一切都很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)