android.content.res.Resources $ NotFoundException:资源ID#0x0 java异常 [英] android.content.res.Resources$NotFoundException: Resource ID #0x0 java exception

查看:85
本文介绍了android.content.res.Resources $ NotFoundException:资源ID#0x0 java异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

运行试图显示对象ListView的片段时会发生此异常。我已经研究了异常但是其他情况的解决方案似乎与setText函数有关,或者其他任何尝试以字符串形式显示除字符串之外的东西。我真的不确定还能说些什么。提前致谢!

This exception occurs while running a fragment trying to display a ListView of objects. I have researched the exception but the solution for other cases seems to have to do with the "setText" function, or anything else trying to display anything else than a string as a string. I'm really not sure what else to say. Thanks in advance!

Java Class

Java Class

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

import in.galaxyofandroid.spinerdialog.OnSpinerItemClick;
import in.galaxyofandroid.spinerdialog.SpinnerDialog;

import static android.R.attr.name;
import static android.R.attr.value;
import static com.company.ingredismartv2.R.id.add;
import static com.company.ingredismartv2.R.id.fragment;
import static com.company.ingredismartv2.R.id.nav_kitchen;

public class Kitchen extends Fragment {

public Kitchen() {
    // Required empty public constructor
}

SpinnerDialog spinnerDialog;
Button add;
ArrayList<String> listOfIngs = new ArrayList<>();



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View root = inflater.inflate(R.layout.fragment_kitchen, container, false);
    add = (Button) root.findViewById(R.id.add);
    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            spinnerDialog.showSpinerDialog();
        }
    });

    IngAdapter adapter = new IngAdapter(getContext(), listOfIngs);
    ListView listView = (ListView) root.findViewById(R.id.list);
    listView.setAdapter(adapter);
    return root;

}

public class IngAdapter extends ArrayAdapter<String> {
    IngAdapter(Context context, ArrayList<String> ings) {
        super(context, 0, ings);
    }


}



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    spinnerDialog = new SpinnerDialog(getActivity(), ingredients, "Select An Ingredient");

    final Ing tomatoSauce = new Ing("Tomato Sauce", 0 ,0);
    listOfIngs.add(tomatoSauce.name);
    final Ing chicken = new Ing("Chicken", 0 ,0);
    listOfIngs.add(chicken.name);
    final Ing olives = new Ing("Olives", 0, 0);
    listOfIngs.add(olives.name);

    ingredients.add("Tomato Sauce");
    ingredients.add("Chicken");
    ingredients.add("Olives");

    ArrayList<Ing> ing = new ArrayList<>();



    spinnerDialog.bindOnSpinerListener(new OnSpinerItemClick() {

        @Override
        public void onClick(String Ingredient, int i) {

            Toast.makeText(Kitchen.super.getContext(), "Selected "+Ingredient, Toast.LENGTH_SHORT).show();

            if(Ingredient.equals(tomatoSauce.name)) {

                if (tomatoSauce.init == 0){

                    tomatoSauce.init = 1;

                }

            } else if(Ingredient.equals(chicken.name)) {

                if (chicken.init == 0){

                    chicken.init = 1;

                }

            } else if(Ingredient.equals(olives.name)){

                if (olives.init == 0){

                    olives.init = 1;

                }

            }

        }
    });


}

ArrayList<String> ingredients = new ArrayList<>();



public class Ing {

    int init;

    int value;

    String name;

    Ing(String name, int value, int init) {
        this.name = name;
        this.value = value;
        this.init = init;
    }


}

}

XML布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.company.ingredismartv2.Kitchen">

<!-- TODO: Update blank fragment layout -->

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:text="Add An Ingredient"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/add"
        android:textSize="30sp"
        android:layout_gravity="center" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">


        <ListView
            android:layout_width="320dp"
            android:layout_height="match_parent"
            android:id="@+id/list">

        </ListView>

        <ListView
            android:layout_width="60dp"
            android:layout_height="match_parent">

        </ListView>

    </LinearLayout>





</LinearLayout>

编辑(日志)

I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: EGL 1.4 QUALCOMM build:  ()
          OpenGL ES Shader Compiler Version: E031.25.03.04
          Build Date: 04/06/15 Mon
          Local Branch: 
          Remote Branch: 
          Local Patches: 
          Reconstruct Branch: 
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Enabling debug mode 0
`enter code here`W/ResourceType: No package identifier when getting value for resource number 0x00000000
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.comapany.ingredismartv2, PID: 9504
              android.content.res.Resources$NotFoundException: Resource ID #0x0
                  at android.content.res.Resources.getValue(Resources.java:1266)
                  at android.content.res.Resources.loadXmlResourceParser(Resources.java:2652)
                  at android.content.res.Resources.getLayout(Resources.java:1082)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:412)
                  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:371)
                  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
                  at android.widget.AbsListView.obtainView(AbsListView.java:2347)
                  at android.widget.ListView.makeAndAddView(ListView.java:1864)
                  at android.widget.ListView.fillDown(ListView.java:698)
                  at android.widget.ListView.fillFromTop(ListView.java:759)
                  at android.widget.ListView.layoutChildren(ListView.java:1673)
                  at android.widget.AbsListView.onLayout(AbsListView.java:2151)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
                  at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1692)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1468)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:131)
                  at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
                  at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1391)
                  at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:870)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1193)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
                  at android.view.View.layout(View.java:15689)
                  at android.view.ViewGroup.layout(ViewGroup.java:5040)
                at android.widget.FrameLay
I/Process: Sending signal. PID: 9504 SIG: 9
Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'


推荐答案

找到您的错误。它在您的IngAdapter下面的行中

Found your error. Its in your line below in your IngAdapter

super(context, 0, ings);

在这里,第二个参数应该是资源名称,不应该被任何int值硬编码。这是布局的标识符,用于创建列表中的每一行。如果您只想显示可以使用的名称列表 - android.R.layout.simple_list_item_1 ,这是android中可用于显示字符串值的标准。

In this the 2nd parameter should be the resource name and should never be hardcoded by any int value. This is the identifier of the layout which will be used for creating each row in your list. If you just want to display the list of names you can use - android.R.layout.simple_list_item_1 which is a standard available in android for displaying just String values.

所以将你的代码更改为

super(context, android.R.layout.simple_list_item_1, ings);     

这篇关于android.content.res.Resources $ NotFoundException:资源ID#0x0 java异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆