2013-06-22 2 views
1
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)); 
} 

}Какой смысл в AppWidgetManager.INVALID_APPWIDGET_ID?

Я думаю, что это бесполезно, чтобы знать, что ваша конфигурация виджета деятельность получила неверный идентификатор виджета. Должен ли я сообщить пользователю: «Эй, есть небольшая проблема, попробуйте еще раз». Это так хромо, это никогда не должно произойти, возможно ли это, чтобы получить неправильный идентификатор виджета? Если кто-нибудь знает смысл использования AppWidgetManager.INVALID_APPWIDGET_ID, пожалуйста, дайте мне знать :).

ответ

0

AppWidgetManager.INVALID_APPWIDGET_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(). Если извлечения Id из AppWidget не удастся, то getInt() вернет второй аргумент (значение по умолчанию). И так как AppWidgetManager.INVALID_APPWIDGET_ID никогда не может быть фактическим идентификатором AppWidget, это безопасно проверить, как показано выше. (Кстати, вы могли бы просто сравнить его с 0, начиная с the value of AppWidgetManager.INVALID_APPWIDGET_ID is 0.)

+0

Я не спрашивал, как узнать активность, полученную из-за плохого widgetID, но что лучше всего подходит для приложения в этой ситуации. –