TypedValue In String konvertieren

An zufälligen Punkten, während ich meine Android-Anwendung verwende, wird LogCat mit Dutzenden Wiederholungen der folgenden 5 Zeilen überschwemmt:

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}

Verwenden Sie die Informationen aus der akzeptierten Antwort aufdiese Frag, Ich habe festgestellt, dass versucht wird, Nullen (0x0) als Boolesche Werte (0x12) zu interpretieren, was keinen Sinn ergibt, da ich es nie mit Nullen oder Booleschen Werten zu tun habe.

Die Ressourcen-IDs aus den Protokollen (r = 0x?) Verweisen auf Ansichten / Ansichtsattribute in einem von zwei Layouts, die im Folgenden aufgeführt werden.

Die einzigen Stellen in meinem Code, an denen ich auf diese Ressourcen-IDs verweise, sind a) der CursorAdapter, der das erste Layout verwendet, und b) eine Klasse, die das zweite Layout verwendet, und ich werde diesen Code auch unten einfügen.

Ich bin mir nicht sicher, ob dies etwas ist, worüber man sich Sorgen machen muss. Ich weiß, dass Korrelation keine Kausalität bedeutet, aber wenn LogCat mit diesen Protokollen überflutet ist, ist das Scrollen durch meine App merklich ruckelig.

Jede Hilfe beim Herausfinden, was los ist, wäre dankbar.

Layout-Datei 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>

Layout-Datei 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)));
    }
}

Andere Klasse:

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;
    }
}

BEARBEITE

Ich werde die Referenzen der einzelnen Ressourcen-IDs in meine Layout-Datei aufnehmen.

0x7f0b00d8:event_type

0xffe51c23:primary (Hauptfarbe meiner App)

0x7f0b008a:event_name

0x7f0b00d6:event_dates

0x7f0b00d7:event_location

eachten Sie auch, dass dies in der 5.0-Vorschau ausgeführt wird. Ich habe diese Protokolle jedoch immer noch gesehen, als ich auf 4.4.4 war.

EDIT # 2

Nach dem Durchsuchen des Android-Quellcodes habe ich festgestellt, dass der einzige Ort, an dem "In String konvertieren" existiert, in der Klasse @ liegandroid.content.res.TypedArray.

Ich kann diese Klasse in meinem Projekt jedoch niemals instanziieren, importieren oder auf irgendeine Weise verwenden! Das wird immer seltsamer.

EDIT # 3

Bei der Anfrage eines Kommentators habe ich mein @ hochgeladstyles.xml undcolors.xml zu einer Übersicht, die sich auf @ befindHie.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage