android - number - TypedValue convertir a cadena
de entero a string android (1)
Presenté un informe de error con el equipo de Android, ya que todavía no podía explicar o solucionar este problema. El informe de error está here . Un comentarista sugirió que desmarque "Habilitar la inspección de atributos de vista" en las Opciones de desarrollador. He aquí, este problema ya está solucionado! No recuerdo haber comprobado eso, lo cual es extraño, pero al menos ahora sé qué causa este problema.
En puntos aleatorios mientras uso mi aplicación de Android, LogCat está inundado con docenas de repeticiones de las siguientes 5 líneas:
10-26 12:53:30.372 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d8}
10-26 12:53:30.372 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x1d/d=0xffe51c23 a=2 r=0x7f090047}
10-26 12:53:30.374 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b008a}
10-26 12:53:30.375 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d6}
10-26 12:53:30.375 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d7}
Usando la información de la respuesta aceptada a esta pregunta , determiné que está tratando de interpretar nulos (0x0) como booleanos (0x12), lo cual no tiene sentido, ya que nunca estoy tratando con nulos o booleanos.
Los identificadores de recursos de los registros (r = 0x?) Apuntan a los atributos de vista / vista dentro de uno de los dos diseños, que incluiré a continuación.
Los únicos lugares en mi código donde hago referencia a esos identificadores de recursos son a) el CursorAdapter que usa el primer diseño yb) una clase que usa el segundo diseño y también incluiré ese código a continuación.
No estoy seguro de si esto es algo de qué preocuparse. Sé que la correlación no implica causalidad, pero cuando LogCat se inunda con esos registros, el desplazamiento a través de mi aplicación es notablemente janky.
Cualquier ayuda para averiguar qué está pasando sería apreciada.
Archivo de diseño # 1:
<?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="wrap_content"
android:minHeight="72dp"
android:padding="16dp">
<TextView
android:id="@+id/event_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:ellipsize="end"
android:maxLines="1"
android:text="Title"
android:textSize="16sp"
android:textColor="@color/primary_text_color"/>
<TextView
android:id="@+id/event_dates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/event_name"
android:text="Dates"
android:textColor="@color/secondary_text_color"
android:textSize="14sp" />
<TextView
android:id="@+id/event_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/event_name"
android:layout_toLeftOf="@id/event_dates"
android:ellipsize="end"
android:singleLine="true"
android:text="Location"
android:textColor="@color/secondary_text_color"
android:textSize="14sp" />
</RelativeLayout>
Archivo de diseño # 2:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/event_type"
android:textSize="14sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/primary"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Header"
android:textColor="#FFFFFF" />
</LinearLayout>
CursorAdapter:
public class EventCursorAdapter extends CursorAdapter {
public String getKey(int position) {
Cursor c = getCursor();
c.moveToPosition(position);
return c.getString(c.getColumnIndex(Database.Events.KEY));
}
public EventCursorAdapter(Context context, Cursor c, int flags) {
super(context, c, flags);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {
LayoutInflater inflater = LayoutInflater.from(context);
return inflater.inflate(R.layout.list_item_event, viewGroup, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView dates = (TextView) view.findViewById(R.id.event_dates);
Date startDate = null, endDate = null;
Log.d(Constants.LOG_TAG, "Start: " + cursor.getString(cursor.getColumnIndex(Database.Events.START)));
try {
startDate = new Date(cursor.getLong(cursor.getColumnIndex(Database.Events.START)));
endDate = new Date(cursor.getLong(cursor.getColumnIndex(Database.Events.END)));
} catch (Exception e) {
// Oops.
}
dates.setText(EventHelper.getDateString(startDate, endDate));
TextView name = (TextView) view.findViewById(R.id.event_name);
name.setText(cursor.getString(cursor.getColumnIndex(Database.Events.NAME)));
TextView location = (TextView) view.findViewById(R.id.event_location);
location.setText(cursor.getString(cursor.getColumnIndex(Database.Events.LOCATION)));
}
}
Otra clase
public class EventTypeHeader extends ListHeader {
public EventTypeHeader(String title) {
super(title);
}
@Override
public View getView(Context c, LayoutInflater inflater, View convertView) {
ViewHolder holder;
if (convertView == null || !(convertView.getTag() instanceof ViewHolder)) {
convertView = inflater.inflate(R.layout.list_item_event_type_header, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.event_type);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(getText());
return convertView;
}
private static class ViewHolder {
TextView text;
}
}
EDITAR
Incluiré lo que cada ID de recurso hace referencia en mi archivo de diseño
0x7f0b00d8: event_type
0xffe51c23: primary
(el color primario de mi aplicación)
0x7f0b008a: event_name
0x7f0b00d6: event_dates
0x7f0b00d7: event_location
Además, tenga en cuenta que esto se está ejecutando en la Vista previa 5.0. Sin embargo, todavía vi estos registros cuando estaba en 4.4.4.
EDITAR # 2
Después de buscar en el código fuente de Android, descubrí que el único lugar donde existe "Conversión a cadena" es en la clase android.content.res.TypedArray
.
Sin embargo, ¡ni siquiera hago una instancia, importación o uso de ninguna manera esa clase en mi proyecto! Esto se vuelve más raro y más raro.
EDITAR # 3
Por solicitud de un comentarista, he cargado mi styles.xml
y colors.xml
en un colors.xml
, que se puede encontrar here .