2015-04-13 53 views
0

下面提到的是包含sum bug的方法,因为我每次尝试启动活动时都会收到ResourceNotFoundException。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()方法只是为唯一标识生成一个随机整数。

下面提到的是我在eclipse中获得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** 
+0

如果您尝试将帧布局首先添加到您的活动布局,并且只有在选择它作为片段的容器之后,该怎么办? – AndroidEx

+0

发布更多的Logcat语句。 –

回答

0

为什么你不在值文件夹中定义一个ID?在名称为“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是问题。

+0

如果我在我的活动中有大量的framelayouts,并且可以动态添加或删除framelayout。我如何在这种情况下使用上述策略。谢谢 –