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 puede poner un EditText
en un RemoteViews
. RemoteViews
se limita a un puñado de widgets posibles, específicamente aquellos documentados para su uso en un widget de aplicación . Y, para una Notification
, dudo que las opciones de AdapterView
, como ListView
, funcionen bien.
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í.