【问题标题】:android.content.res.Resources$NotFoundException: Resource ID #0x0 java exceptionandroid.content.res.Resources$NotFoundException: 资源 ID #0x0 java 异常
【发布时间】:2026-02-14 08:30:01
【问题描述】:

在运行片段试图显示对象的 ListView 时发生此异常。我已经研究了异常,但其他情况的解决方案似乎与“setText”函数有关,或者任何其他试图将字符串显示为字符串的东西。我真的不知道还能说什么。提前致谢!

Java 类

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'

【问题讨论】:

  • 发布你的日志
  • 这主要与您的 findviewbyid 无法找到具有该 ID 的正确资源有关。发布您的日志并检查资源名称并再次清理构建它
  • 日志已发布
  • @Keith 请在下面查看我的回答。

标签: java android


【解决方案1】:

发现你的错误。它在您的 IngAdapter 的下面一行中

super(context, 0, ings);

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

所以把你的代码改成

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

【讨论】: