studio programacion para móviles español edición desarrollo desarrollar curso aprende aplicaciones android exception android-notifications

para - manual programacion android español pdf



No se pudo expandir RemoteViews (5)

Descubrí que el uso de android: background = "? Attr / colorPrimaryDark" también provoca un bloqueo. Cuando se cambió a android: background = "@ color / colorPrimaryDark" dejó de fallar.

Intento crear una notificación personalizada pero obtengo la siguiente excepción:

FATAL EXCEPTION: main android.app.RemoteServiceException: Bad notification posted from package com.my.app: Couldn''t expand RemoteViews for: StatusBarNotification(pkg=com.my.app user=UserHandle{0} id=1 tag=null score=0: Notification(pri=0 contentView=com.my.app/0x7f03001b vibrate=null sound=null defaults=0x0 flags=0x2 kind=[null])) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1423) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)

Mi código se ve así:

Intent intent = new Intent(this, MyFragmentActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent launchIntent = PendingIntent.getActivity(this, 0, intent, 0); RemoteViews notificationView = new RemoteViews(this.getPackageName(), R.layout.notification_layout); notificationView.setImageViewBitmap(R.id.notification_icon, icon); notificationView.setTextViewText(R.id.present_text, "Text Test"); Notification.Builder builder = new Notification.Builder(getApplicationContext()); builder .setContentTitle("Titel Test") .setSmallIcon(R.drawable.ic_launcher_icon) .setContentIntent(launchIntent) .setOngoing(true) .setWhen(0) .setTicker("ticker Test") .setContent(notificationView); NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(NOTIFICATION_ID, builder.getNotification());

El diseño se ve como sigue:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/notification_icon" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" /> <EditText android:id="@+id/present_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/notification_icon" android:gravity="center_vertical" /> </RelativeLayout>

Estoy ejecutando Android 4.3. He intentado antes con NotificationCompat y obtuve el mismo error.

¿Alguien tiene una idea?



No todas las vistas se pueden utilizar en RemoteViews. Un objeto RemoteViews puede admitir las siguientes clases de diseño:

FrameLayout

LinearLayout

Disposición relativa

Diseño de cuadrícula

Reloj analogo

Botón

Cronómetro

Botón de imagen

ImageView

Barra de progreso

Vista de texto

ViewFlipper

Vista de la lista

Vista en cuadrícula

StackView

AdaptadorViewFlipper

No puedes usar otras clases de diseño como Edittext o CustomViews.


Para mí, fue porque estaba configurando el texto dentro de remoteViews TextViews incorrectamente. Yo estaba haciendo esto

remoteViews.setString(R.id.txt, "setText", "text");

Usando uno de estos métodos lo resolví por mí:

remoteViews.setCharSequence(R.id.txt, "setText", "text"); //Or simply: remoteViews.setTextViewText(R.id.txt, "text");


Si tiene un ScrollView entre sus RemoteViews, elimínelo. Esto funcionó para mí.