ResourcesNotFoundException: String resource ID #0x5

  • Antworten:8
Felix W.
  • Forum-Beiträge: 4

09.01.2015, 22:21:24 via Website

Hallo,
ich habe mir eine kleine Android App gebastelt, die auf dem Beispielcode für die ExpandableListView von dem Vogella listview Tutorial basiert (Nr.15).
Ich habe das Ganze so geändert, dass in der Liste zunächst einfach nur für jeden Listeneintrag der Tag und Monat angezeigt wird. Wenn ich die App nun im Emulator laufen lasse, spuckt die Logcat mir folgendes aus (hab nur die ErrorZeilen kopiert):

    01-09 19:50:56.528: E/AndroidRuntime(2316): FATAL EXCEPTION: main
01-09 19:50:56.528: E/AndroidRuntime(2316): Process: com.vogella.android.listview.expandable, PID: 2316
01-09 19:50:56.528: E/AndroidRuntime(2316): android.content.res.Resources$NotFoundException: String resource ID #0x5
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.content.res.Resources.getText(Resources.java:274)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.TextView.setText(TextView.java:4122)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at com.vogella.android.listview.expandable.MyExpandableListAdapter.getGroupView(MyExpandableListAdapter.java:96)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:446)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.AbsListView.obtainView(AbsListView.java:2344)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1270)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.ListView.onMeasure(ListView.java:1182)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.View.measure(View.java:17430)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1083)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:615)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.View.measure(View.java:17430)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.View.measure(View.java:17430)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:447)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.View.measure(View.java:17430)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.View.measure(View.java:17430)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.Choreographer.doCallbacks(Choreographer.java:580)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.Choreographer.doFrame(Choreographer.java:550)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.os.Handler.handleCallback(Handler.java:739)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.os.Handler.dispatchMessage(Handler.java:95)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.os.Looper.loop(Looper.java:135)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at android.app.ActivityThread.main(ActivityThread.java:5221)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at java.lang.reflect.Method.invoke(Native Method)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at java.lang.reflect.Method.invoke(Method.java:372)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
01-09 19:50:56.528: E/AndroidRuntime(2316):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

Ich werde daraus nicht schlau. Es wird kein CausedBy:... Ausdruck angezeigt, deshalb weiß ich nicht, wie ich vorgehen soll, um den Fehler zu finden. Im Debugger hab ich es mittels ResourcesNotFoundException-Breakpoint versucht, aber da kommt dann auch nur folgendes:
image
Wenn ich da dann die Android.jar Datei in dem Programmverzeichnis als Source auswähle ändert sich nichts. Andere Apps gehen ganz normal, auch das ExpandableList Beispiel aus dem Link oben. Weiß jemand Rat? Muss ich da mein Eclipse neu aufsetzen?

Hier nochmal mein abgeänderter Code:

    package com.vogella.android.listview.expandable;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;

import android.app.Activity;
import android.os.Bundle;
import android.util.SparseArray;
import android.view.Menu;
import android.widget.ExpandableListView;
import java.lang.StringBuffer;


public class MainActivity extends Activity {
  ArrayList<CurrentDay> currentweek = new ArrayList<CurrentDay>();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setCurrentWeek();
    ExpandableListView listView = (ExpandableListView) findViewById(R.id.listView);
    MyExpandableListAdapter adapter = new MyExpandableListAdapter(this,
        currentweek);
    listView.setAdapter(adapter);
  }

  public void setCurrentWeek() {
      Calendar cal = new GregorianCalendar();
      int numDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
      CurrentDay day = null;

      for (int i = 0; i < 7; i++){
            if (Calendar.DAY_OF_MONTH+i > numDays){

            for (int h = 0; h < 7 - i; h++){

                day = new CurrentDay(1+h, Calendar.MONTH+1);
                currentweek.add(day); 
                }
            }

        else {
                day = new CurrentDay(Calendar.DAY_OF_MONTH+i, Calendar.MONTH);
            }

        for (int j = 0; j < 5; j++) {
                day.children.add(+ j);
            }

        currentweek.add(day); 
      }
 }
} 



    package com.vogella.android.listview.expandable;

import java.util.ArrayList;

import android.app.Activity;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckedTextView;
import android.widget.TextView;
import android.widget.Toast;

public class MyExpandableListAdapter extends BaseExpandableListAdapter {

  private final ArrayList<CurrentDay> currentweek;
  public LayoutInflater inflater;
  public Activity activity;

  public MyExpandableListAdapter(Activity act, ArrayList<CurrentDay> currentweek) {
    activity = act;
    this.currentweek = currentweek;
    inflater = act.getLayoutInflater();
  }

  @Override
  public Object getChild(int groupPosition, int childPosition) {
    return currentweek.get(groupPosition).children.get(childPosition);
  }

  @Override
  public long getChildId(int groupPosition, int childPosition) {
    return 0;
  }

  @Override
  public View getChildView(int groupPosition, final int childPosition,
      boolean isLastChild, View convertView, ViewGroup parent) {
    final String children = (String) getChild(groupPosition, childPosition);
    TextView text = null;
    if (convertView == null) {
      convertView = inflater.inflate(R.layout.listrow_details, null);
    }
    text = (TextView) convertView.findViewById(R.id.textView1);
    text.setText(children);
    convertView.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
          //Intent to start DetailedViewActivity
        Toast.makeText(activity, children,
            Toast.LENGTH_SHORT).show();
      }
    });
    return convertView;
  }

  @Override
  public int getChildrenCount(int groupPosition) {
    return currentweek.get(groupPosition).children.size();
  }

  @Override
  public Object getGroup(int groupPosition) {
    return currentweek.get(groupPosition);
  }

  @Override
  public int getGroupCount() {
    return currentweek.size();
  }

  @Override
  public void onGroupCollapsed(int groupPosition) {
    super.onGroupCollapsed(groupPosition);
  }

  @Override
  public void onGroupExpanded(int groupPosition) {
    super.onGroupExpanded(groupPosition);
  }

  @Override
  public long getGroupId(int groupPosition) {
    return 0;
  }

  @Override
  public View getGroupView(int groupPosition, boolean isExpanded,
      View convertView, ViewGroup parent) {
    if (convertView == null) {
      convertView = inflater.inflate(R.layout.listrow_group, null);
    }
    CurrentDay currentday = (CurrentDay) getGroup(groupPosition);
    ((CheckedTextView) convertView).setText(currentday.day);
    ((CheckedTextView) convertView).setChecked(isExpanded);
    return convertView;
  }

  @Override
  public boolean hasStableIds() {
    return false;
  }

  @Override
  public boolean isChildSelectable(int groupPosition, int childPosition) {
    return false;
  }
} 



    package com.vogella.android.listview.expandable;

import java.util.ArrayList;
import java.util.List;


public class CurrentDay {

    public int day;
    public int month;

    public final ArrayList<Integer> children = new ArrayList<Integer>();

    public CurrentDay(int day, int month) {
        this.day = day;
        this.month = month;
    }

}

activity_main.xml:

<LinearLayout xmlns:android="link den ich hier leider noch nicht posten kann"
xmlns:tools="link den ich hier leider noch nicht posten kann"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<ExpandableListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ExpandableListView>

listrow_groups.xml:

<CheckedTextView xmlns:android="link den ich hier leider noch nicht posten kann"
xmlns:tools="link den ich hier leider noch nicht posten kann"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="?android:attr/listPreferredItemHeight"
android:layout_marginLeft="8dp"
android:drawableRight="@drawable/ic_launcher"
android:gravity="left"
android:paddingLeft="32dp"
android:paddingTop="8dp"
android:text="Test"
android:textSize="14sp"
android:textAlignment="textEnd"
android:textStyle="bold" /> 

listrow_details.xml:

<LinearLayout xmlns:android="link den ich hier leider noch nicht posten kann"
xmlns:tools="link den ich hier leider noch nicht posten kann"
android:layout_width="match_parent"
android:layout_height="40dp"
android:clickable="true"
android:orientation="vertical"
android:paddingLeft="40dp"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/ic_launcher"
    android:drawablePadding="5dp"
    android:gravity="center_vertical"
    android:text="@string/hello_world"
    android:textSize="14sp"
    android:textStyle="bold" >
</TextView>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@android:color/black" />

strings.xml:

<?xml version="1.0" encoding="utf-8"?>

<string name="app_name">ListViewExpandableCopy</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>

— geändert am 10.01.2015, 11:04:38

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

09.01.2015, 22:30:38 via Website

Hallo Felix,
Herzlich wilkommen hier im Forum :)



Schau dir mal den Fehler an:

01-09 19:50:56.528: E/AndroidRuntime(2316): android.content.res.Resources$NotFoundException: String resource ID #0x5

Sieht so aus als Fehlt ihm irgend eine Resource. Schau mal ob du alle Strings und layouts hast, die im Code per Ressouce verwendet werden.

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Felix W.
  • Forum-Beiträge: 4

10.01.2015, 10:52:47 via Website

Hmm also ich habe 3 Layouts und nur in einer wird, wenn ich das richtig sehe, überhaupt eine Referenz zur strings.xml gemacht (das geschieht doch über @strings:... oder?) und zwar in listrow_details.xml. Der hello_world String ist aber deklariert, andernfalls würde Eclipse das ja denk ich auch als Fehler anzeigen.

Hab in den Startpost nochmal meine Layouts und die strings.xml hinzugefügt.

— geändert am 10.01.2015, 11:04:08

Antworten
pepperonas
  • Forum-Beiträge: 434

10.01.2015, 11:21:36 via Website

Bist du sicher, dass dein Package richtig ist? Du müsstest die Beispiel-Anwendung komplett importiert haben bzw. das Projekt mit dem gleichen Package Namen benannt haben als du sie erstellt hast... Hast du das?
Anderenfalls klicke mal "Clean Project" und Rebuild. Zur Not mal die R.java löschen und rebuild...

Und was soll das sein:
"LinearLayout xmlns:android="link den ich hier leider noch nicht posten kann"
xmlns:tools="link den ich hier leider noch nicht posten kann"

?

Open Source

Antworten
Felix W.
  • Forum-Beiträge: 4

10.01.2015, 11:51:08 via Website

pepperonas

Bist du sicher, dass dein Package richtig ist? Du müsstest die Beispiel-Anwendung komplett importiert haben bzw. das Projekt mit dem gleichen Package Namen benannt haben als du sie erstellt hast... Hast du das?

Ich habe das Beispielprojekt einfach kopiert und dann neu benannt, der Package Name blieb aber der Gleiche. So sieht die Struktur bei mir aus:

image

[[cite pepperonas]]
Anderenfalls klicke mal "Clean Project" und Rebuild. Zur Not mal die R.java löschen und rebuild...

Hmm hab beides gemacht (mit rebuild meinst du wohl die Option "Build automatically"), aber der Fehler bleibt.

Und was soll das sein:
"LinearLayout xmlns:android="link den ich hier leider noch nicht posten kann"
xmlns:tools="link den ich hier leider noch nicht posten kann"

?

Ich bin neu im Forum und darf noch keine Links posten. In der Layout Files stehen die aber standardmäßig oben drin, hab sie deshalb rausgenommen (sry falls es etwas verwirrend ist).

Antworten
pepperonas
  • Forum-Beiträge: 434

11.01.2015, 15:21:37 via Website

Okay, hmm wenn du willst kannst du mir mal das Projekt zuschicken, dann schaue ich mal rein. Kannst die zip an ... senden.

@Mods: die Email kann stehen bleiben, ist extra für die "Öffentlichkeit" :)

Edit by Mod Pascal P. Email entfernt

— geändert am 11.01.2015, 15:31:30 durch Moderator

Open Source

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

11.01.2015, 15:33:16 via Website

Hallo pepperonas,
leider können wir bei Emails keine Ausnahmen machen, bitte benutzt die PN funktion, da könnt ihr dann die Email Adressen austauschen.

Als alternative könnte man dir dann per PN einen Download Link schicken.

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Felix W.
  • Forum-Beiträge: 4

11.01.2015, 17:25:26 via Website

Ähem, also leider darf ich auch noch keine Pn´s verschicken. pepperonas, ich würd deine Hilfe gerne in Anspruch nehmen, dazu müsstest du mir am Besten mal deine Mail per Pn zukommen lassen. Dank dir!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

11.01.2015, 19:52:06 via Website

Hallo Felix,
normalerweise kann man PNs erst ab einer Anzahl von 10 Posts verschicken. Ich habe dich jetzt von Hand freigeschaltet.
Falls es nicht geht bitte einmal aus und wieder einloggen.

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten