【问题标题】:Android Resources$NotFoundException: Resource ID #0x0 IssueAndroid Resources$NotFoundException: 资源 ID #0x0 问题
【发布时间】:2013-03-06 08:10:38
【问题描述】:

我在已设置的类中遇到此错误,我是 android 开发新手,希望了解如何在 eclipse 中调试此错误。 我查看了许多有关此问题的堆栈溢出帖子,但没有一个可以帮助我解决问题。

public class LeftRightSliderFragmentController extends BaseSliderFragmentController
{
    public LeftRightSliderFragmentController()
    {
    super();
    }
    public LeftRightSliderFragmentController(int titleRes)
    {

    super(R.string.left_and_right);
    }

在我的 strings.xml 中

我有

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

<string name="app_name">SliderExample</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="left_and_right">Left and Right</string>
</resources>

在我的基类中

public class BaseSliderFragmentController extends SlidingFragmentActivity
{

   private int mTitleRes;
   protected RSSFeedFragmentController mFrag;

    public BaseSliderFragmentController(int titleRes)
    {
       mTitleRes = titleRes;
    }

    public BaseSliderFragmentController()
    {
    // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
            //New Change EDIT
            String h = "Hello"
    setTitle(h);

基本上我不确定为什么会出现这个问题,我也不确定这个问题会出现在哪里。我想知道是否有办法调试到发生这种情况的代码行,以便我进行调查。我相信这可能与 setTitle 有关吗?

03-06 02:58:04.195: E/AndroidRuntime(4879): FATAL EXCEPTION: main
03-06 02:58:04.195: E/AndroidRuntime(4879): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sliderexample/com.example.sliderexample.FragmentControllers.LeftRightSliderFragmentController}: android.content.res.Resources$NotFoundException: String resource ID #0x0
03-06 02:58:04.195: E/AndroidRuntime(4879):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088)
03-06 02:58:04.195: E/AndroidRuntime(4879):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113)
03-06 02:58:04.195: E/AndroidRuntime(4879):     at android.app.ActivityThread.access$700(ActivityThread.java:139)
03-06 02:58:04.195: E/AndroidRuntime(4879):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224)

编辑:更改代码新结果新错误

03-06 03:33:05.034:E/AndroidRuntime(6336):致命异常:主要 03-06 03:33:05.034: E/AndroidRuntime(6336): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.sliderexample/com.example.sliderexample.FragmentControllers.LeftRightSliderFragmentController}: android.content.res .Resources$NotFoundException: 资源 ID #0xa

问题是我不知道这个错误发生在哪里,有人知道如何使用调试器到达该行吗?....我也在堆栈上搜索了这个,似乎没有什么可以帮助我。

【问题讨论】:

  • 调试:在类的左边,双击行号旁边设置调试点。设置其中一些后,在调试模式下运行程序,然后按左起第二个黄色箭头逐行浏览您的代码。慢慢来,继续观察变量。如果变量框中出现异常,您就知道必须在哪里进行更改。您的代码:也许您只是发布了较少的代码或者我没有得到它,但是在第一个代码框中您调用了一个名为“LeftRightSliderFragmentController”的方法并推送一个 int 变量但不要在里面使用它?!?!跨度>

标签: android android-resources


【解决方案1】:

你的带参数的构造函数永远不会被调用。所以mTitleRes等于0,android找不到这个资源。您不应该使用构造函数将参数传递给活动。只会调用默认构造函数。您应该在基本活动中使用默认值初始化 mTitleRes,或者使基本活动抽象,创建抽象方法 getTitleRes(),并在 LeftRightSliderFragmentController 中覆盖它。然后使用 setTitle(getTitleRes())。或者只是用后代中的其他值初始化 mTitleRes。一切都取决于您如何使用此活动。无论如何,创建活动时不会调用 LeftRightSliderFragmentController(int titleRes)。

【讨论】:

  • 好的,如果按照你说的做,现在我得到了同样的错误,#0xa?我也搜索了那个错误。我所做的只是设置了一个默认值 setTitle("Hello");这样构造函数就不需要运行了。
  • 那么问题可能出在其他地方。尝试使用逐行调试来找出错误所在。
【解决方案2】:

删除你的

<string name="left_and_right">Left and Right</string>

改为使用

<integer name="integer_name">integer_value</integer>

如果要使用该字符串值,请使用以下语句获取字符串

getString(R.string.left_and_right);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多