创建活动视图时的ResourceNotFoundException

时间:2015-04-13 00:19:51

标签: android android-layout android-fragments

下面提到的是包含sum bug的方法,因为每当我尝试启动活动时,我都会收到ResourceNotFoundException。

private void createActivityLayout(Fragment fragment) 
{
    FrameLayout frameLayout =  new FrameLayout(this);

    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

    final float scale = getResources().getDisplayMetrics().density;

    int padding_5dp = (int) (5 * scale + 0.5f); 

    frameLayout.setLayoutParams(params);

    frameLayout.setBackgroundResource(R.drawable.list_view_border);

    frameLayout.setPadding(padding_5dp, padding_5dp, padding_5dp, padding_5dp);

    frameLayout.setClickable(true);

    **int id = IdGenerator.getId();

    frameLayout.setId(id);

    String tag = fragment.getTag() != null ? fragment.getTag() : "Tag-".concat(Integer.toString(IdGenerator.getId()));

    getFragmentManager().beginTransaction().add(id, fragment, tag).commit();**

    childFrames.put(((NoteFragment)fragment).getNoteFragmentId(), frameLayout);

    updateActivityView();
}

据我所知,问题可能出现在上面的粗体代码中。 IdGenerator.getId()方法只为唯一ID生成随机整数。

下面提到的是我在日食中的LogCat中获得的异常消息。 每次运行应用程序时,下面例外中提到的资源ID都会更改。

**04-13 02:01:21.288: E/AndroidRuntime(13997): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gp.app.professionalpa/com.gp.app.layout.manager.NotesLayoutManagerActivity}: android.content.res.Resources$NotFoundException: Unable to find resource ID #0x323660**

1 个答案:

答案 0 :(得分:0)

为什么不在values文件夹中定义id?在values文件夹中创建一个名为" ids"的xml文件。并将下面的xml放入其中。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="some_name" type="id"></item>
</resources>

然后您可以引用该ID并将其设置如下

frameLayout.setId(R.id.some_name);

我认为如果设置id是问题,这会对你有帮助。