2013-09-21 5 views
0

Я создал виджет для Android, и когда я добавил активность настройки, виджет запускает вид активности и закрывает его, но виджет не показывает. Очевидно, что что-то не так с кодом в моем классе Configure:Android Widget Configure

package com.rb.widget; 

import android.app.Activity; 
import android.os.Bundle; 

public class WidgetConfig extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    } 



} 

Как должен выглядеть класс конфигурации?

ответ

0

Это связано с тем, что операция «Настроить активность» должна вернуть значение.

0

В onCreate функции, вы должны вызвать

/** 
* In onCreate() we have to ensure that if the user presses BACK or cancelled the activity, 
* then we should not add app widget. 
*/ 
setResult(RESULT_CANCELED); 

, чтобы гарантировать, что если вы закроете конфигурации активности виджет не добавит к дому. И следующий код показывает, как настроить виджет.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    /** 
    * In onCreate() we have to ensure that if the user presses BACK or cancelled the activity, 
    * then we should not add app widget. 
    */ 
    setResult(RESULT_CANCELED); 

    setContentView(R.layout.activity_widget_settings); 

    Intent intent = getIntent(); 
    Bundle extras = intent.getExtras(); 
    if (extras != null){ 
     appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, 
       AppWidgetManager.INVALID_APPWIDGET_ID); 
    } 
    if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID){ 
     finish(); 
     return; 
    } 
    appWidgetManager = AppWidgetManager.getInstance(this); 
    views = new RemoteViews(this.getPackageName(), R.layout.my_app_widget); 
} 

После вас конфигурации, не забудьте позвонить:

Intent widgetIntent = new Intent(); 
widgetIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
setResult(RESULT_OK,widgetIntent); 
appWidgetManager.updateAppWidget(appWidgetId, views);