Android - android.Inhalt.res.Resources$NotFoundException: Resource ID #0x0
Ich versuche zu schreiben, eine Android-app, würde das durchsuchen der Dateien auf einem Handy. Bei mir läuft die app auf dem emulator, bekomme ich folgende Fehler:
02-18 22:14:17.839: E/AndroidRuntime(896): FATAL EXCEPTION: main
02-18 22:14:17.839: E/AndroidRuntime(896): android.content.res.Resources$NotFoundException: Resource ID #0x0
02-18 22:14:17.839: E/AndroidRuntime(896): at android.content.res.Resources.getValue(Resources.java:1018)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.content.res.Resources.getDrawable(Resources.java:663)
02-18 22:14:17.839: E/AndroidRuntime(896): at com.example.App.FileArrayAdapter.getView(FileArrayAdapter.java:56)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.AbsListView.obtainView(AbsListView.java:2033)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.ListView.makeAndAddView(ListView.java:1772)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.ListView.fillDown(ListView.java:672)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.ListView.fillFromTop(ListView.java:732)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.ListView.layoutChildren(ListView.java:1625)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.AbsListView.onLayout(AbsListView.java:1863)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.View.layout(View.java:11278)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.ViewGroup.layout(ViewGroup.java:4224)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.View.layout(View.java:11278)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.ViewGroup.layout(ViewGroup.java:4224)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.View.layout(View.java:11278)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.ViewGroup.layout(ViewGroup.java:4224)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.View.layout(View.java:11278)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.ViewGroup.layout(ViewGroup.java:4224)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.os.Handler.dispatchMessage(Handler.java:99)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.os.Looper.loop(Looper.java:137)
02-18 22:14:17.839: E/AndroidRuntime(896): at android.app.ActivityThread.main(ActivityThread.java:4424)
02-18 22:14:17.839: E/AndroidRuntime(896): at java.lang.reflect.Method.invokeNative(Native Method)
02-18 22:14:17.839: E/AndroidRuntime(896): at java.lang.reflect.Method.invoke(Method.java:511)
02-18 22:14:17.839: E/AndroidRuntime(896): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-18 22:14:17.839: E/AndroidRuntime(896): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-18 22:14:17.839: E/AndroidRuntime(896): at dalvik.system.NativeStart.main(Native Method)
Hier ist der java code für FileArrayAdapter.java:
import java.util.List;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class FileArrayAdapter extends ArrayAdapter<Item>{
private Context c;
private int id;
private List<Item> items;
public FileArrayAdapter(Context context, int textViewResourceId, List<Item> objects)
{
super(context, textViewResourceId, objects);
c = context;
id = textViewResourceId;
items = objects;
}
public Item getItem(int i)
{
return items.get(i);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if(v == null)
{
LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(id, null);
}
final Item i = items.get(position);
if(i != null)
{
TextView t1 = (TextView)v.findViewById(R.id.TextView01);
TextView t2 = (TextView)v.findViewById(R.id.TextView02);
TextView t3 = (TextView)v.findViewById(R.id.TextViewDate);
ImageView imageCity = (ImageView) v.findViewById(R.id.fd_Icon1);
String uri = "drawable/" + i.getImage();
int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName());
Drawable image = c.getResources().getDrawable(imageResource);
imageCity.setImageDrawable(image);
if(t1 != null)
t1.setText(i.getName());
if(t2 != null)
t2.setText(i.getData());
if(t3 != null)
t3.setText(i.getDate());
}
return v;
}
}
UPDATE Hier ist die Item.java code:
public class Item implements Comparable<Item>{
private String name, data, date, path, image;
public Item(String n, String d, String dt, String p, String i)
{
name = n;
data = d;
date = dt;
path = p;
image = i;
}
public String getName()
{
return name;
}
public String getData()
{
return data;
}
public String getDate()
{
return date;
}
public String getPath()
{
return path;
}
public String getImage()
{
return image;
}
@Override
public int compareTo(Item another) {
//TODO Auto-generated method stub
if(this.name != null)
return this.name.toLowerCase().compareTo(another.getName().toLowerCase());
else
throw new IllegalArgumentException();
}
}
Was ist Zeile Nummer 56 in
Was bedeutet
Haben Sie versucht, es als
Zeile Nummer 56 ist
Sie sind Strings.
FileArrayAdapter.java
?Was bedeutet
i.getData()
und i.getDate()
zurück? Sind Sie Strings
oder etwas anderes?Haben Sie versucht, es als
int imageResource = c.getResources().getIdentifier(i.getImage(), "drawable", c.getPackageName());
?Zeile Nummer 56 ist
Drawable image = c.getResources().getDrawable(imageResource);
Sie sind Strings.
InformationsquelleAutor user2201650 | 2015-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mach dir keine sorgen . . .
Ich hab das gleiche problem vor .Verwenden Sie mein Weg zu bekommen drawable
Beispiel :
Diese wird definitiv solove Ihr problem.
Aber,
Wenn Sie nicht über Bilder in den drawable-Ordner möglicherweise gibt Es zwei Möglichkeiten
Im Ersten Fall
Im Zweiten Fall
Referenz :Android Drawable Bilder von URL
Wenn irgendein problem weiterhin besteht, Kontaktieren Sie mich bitte [email protected] .
drawable
Ordner in meinem Eclipse-Projekt.Wenn Sie sich Bild von SDCARD(TELEFON), dann verwenden Sie folgenden code imageCity.setImageBitmap(BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"image.png"));
Die andere Möglichkeit ist es aus der URL. imageCity.setImageDrawable(drawableFromUrl("url")); public Drawable drawableFromUrl(String url) throws IOException { Bitmap-x; HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.connect(); InputStream input = connection.getInputStream(); x = BitmapFactory.decodeStream(input); return new BitmapDrawable(x); } Verweis:stackoverflow.com/questions/3375166/...
Check meine Antwort Bearbeiten
Ich bin nach dieser [link] (custom-android-dn.blogspot.com/2013/01/...) Können Sie ändern Sie den code in dem link und erklären, wie es zu tun? Danke!!! 🙂
InformationsquelleAutor Gaganpreet Singh
Dieser code verursacht das problem:
Gibt es mindestens 2 Probleme:
getIdentifier
sollte pass 'drawable' als RessourceAlso, versuchen Sie diesen code:
HINWEIS: Sie haben keine post
Item
Klasse, oder wasgetImage
tut. Wenn Sie sind noch immer die Ausnahme (weil imageResource 0) es ist, weil Sie nicht über ein drawable Ressource namens mit exakt demselben Namen wie das, was ich.Funktion " getImage() gibt, so dass Sie brauchen werden, um zu überprüfen, dass auch.Item.java
code. Ich habe versucht, was Sie erzählte. Aber ich habe noch immer die gleiche exception.Hast du meine note Lesen? Was ist die Funktion " getImage() gibt genau? Sie haben ein drawable Ressource mit dem exakt gleichen Namen (ohne Erweiterung)? Sie benötigen mehr Informationen oder einfach es herauszufinden
die Funktion " getImage() wieder einen String aus dem Item.java Datei
Richtig... Und offensichtlich, dass der string nicht mit dem Namen einer Ressource! Das ist, warum es ist wieder null!
Ich bin nach dieser [link] (custom-android-dn.blogspot.com/2013/01/...) für die Codierung
InformationsquelleAutor Greg Ennis
Dieser Fehler auch angezeigt, wenn es zeigt ein
AlertDialog
in Android, wenn es verwendetapplicationContext
.die Lösung ist die Verwendung
this
:InformationsquelleAutor hertzon