下面提到的是包含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**
答案 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是问题,这会对你有帮助。