AppWidgetManager.INVALID_APPWIDGET_ID有什么意义?

时间:2013-06-22 22:35:42

标签: android widget

public class WidgetConfigure extends Activity {

private int widgetID;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    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));
}

}

我认为您的窗口小部件配置活动得到错误的窗口小部件ID是没用的。我应该通知用户:“嘿,有一点问题,请再试一次。”这是如此蹩脚,这应该永远不会发生,甚至可能发生,接收错误的小部件ID?如果有人知道AppWidgetManager.INVALID_APPWIDGET_ID的有意义使用,请告诉我:)。

1 个答案:

答案 0 :(得分:0)

AppWidgetManager.INVALID_APPWIDGET_ID用于确定您是否成功检索到窗口小部件的ID。

举个例子:

widgetId = this.getIntent().getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);

if(widgetId == AppWidgetManager.EXTRA_APPWIDGET_ID){
// something went wrong
}
else{
// proceed...
}

您必须将两个参数传入getInt()。如果检索AppWidget的Id失败,则getInt()将返回第二个参数(默认值)。由于AppWidgetManager.INVALID_APPWIDGET_ID永远不会是AppWidget的实际ID,因此如上所示,检查它是安全的。 (顺便说一句,你也可以将它与0进行比较,因为the value of AppWidgetManager.INVALID_APPWIDGET_ID is 0。)