Android资源$ NotFoundException:资源ID#0x0问题

时间:2013-03-06 08:10:39

标签: android android-resources

我在我设置的类中遇到此错误,我是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):致命异常:主要 3月3日至6日: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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

删除

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

相反,请使用

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

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

getString(R.string.left_and_right);