2012-05-04 2 views
-1

Я начинаю с виджета для Android-мира. У меня есть этот макет, названный "widget.xml":ClassCastException в виджет

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="5dip" > 

<ImageButton 
    android:id="@+id/icono" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/ic_launcher" /> 

Это просто кнопка, как вы можете видеть. Это конфигурация XML виджета:

<?xml version="1.0" encoding="utf-8"?> 
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
android:initialLayout="@layout/widget" 
android:minWidth="72dip" 
android:minHeight="72dip" 
android:updatePeriodMillis="7000" 
android:label="Widget_azafata" 
/> 

Это класс расширения AppWidgetProvider, как есть, это нетронутым:

public class WidgetAppProvider extends AppWidgetProvider{ 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
     int[] appWidgetIds) { 


    super.onUpdate(context, appWidgetManager, appWidgetIds); 
} 


    } 

И это конфигурация активность:

public class WidgetConfig extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    setContentView(R.layout.main); 
    super.onCreate(savedInstanceState); 
    ImageButton boton=(ImageButton) findViewById(R.id.icono); 
      //stuff here 
     } 

И линии в манифесте:

<receiver 

     android:name=".WidgetAppProvider" 
     android:label="Widget_azafata"> 
     <intent-filter> 
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
     </intent-filter> 
     <meta-data 

      android:name="android.appwidget.provider" 
      android:resource="@xml/widget_azafata_xml" /> 


    </receiver> 

Ну, я запустить виджет и показываю это исключение:

05-04 10:21:14.144: E/AndroidRuntime(320): FATAL EXCEPTION: main 
05-04 10:21:14.144: E/AndroidRuntime(320): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.publidirecta.Azafata/com.publidirecta.Azafata.WidgetAppProvider}: java.lang.ClassCastException: com.publidirecta.Azafata.WidgetAppProvider 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.os.Looper.loop(Looper.java:123) 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-04 10:21:14.144: E/AndroidRuntime(320): at java.lang.reflect.Method.invokeNative(Native Method) 
05-04 10:21:14.144: E/AndroidRuntime(320): at java.lang.reflect.Method.invoke(Method.java:521) 
05-04 10:21:14.144: E/AndroidRuntime(320): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-04 10:21:14.144: E/AndroidRuntime(320): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-04 10:21:14.144: E/AndroidRuntime(320): at dalvik.system.NativeStart.main(Native Method) 
05-04 10:21:14.144: E/AndroidRuntime(320): Caused by: java.lang.ClassCastException: com.publidirecta.Azafata.WidgetAppProvider 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
05-04 10:21:14.144: E/AndroidRuntime(320): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 

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

спасибо!

ответ

0

Где-то вы звоните startActivity(), чтобы начать WidgetAppProvider. WidgetAppProvider - BroadcastReceiver, а не Activity.

+0

Я не звоню startActivity в любом месте в МОЙ код. Я не знаю, будет ли он автоматически вызываться SDK. – Fustigador

2

Вы объявляете свой Activity в манифесте?

и вы должны переключить последовательность строк в onCreate() так:

super.onCreate(savedInstanceState); // this should be first call 
setContentView(R.layout.main);  
ImageButton boton=(ImageButton) findViewById(R.id.icono); 
+0

Нет, моя активность не была объявлена ​​в манифесте. Учебник, который я посещал, не упоминал об этом. И переключение. Спасибо, Адиль! – Fustigador

+0

Итак, на самом деле вы делали 3 ошибки: p, 1. объявление активности, 2) переключение последовательности, 3) вызов неправильного макета. –

+0

Да ... но im теперь вызывает правильную компоновку, включил Activity в манифесте и сделал переключение, сказанное вами ... и im все равно получал одно и то же исключение :( – Fustigador

1

Думаю ваше имя XML является «widget.xml», но вы вызываете main.xml в activity.you должны изменить SetContentView (R.layout.widget);

+0

Да, это так. Im немного глупо: P – Fustigador