我目前正试图了解一个异常,该异常在一切正常工作时突然出现。我有一个ViewPager和两个片段,我在其中一个片段中调用了相机意图。当意图完成时,应用程序崩溃:
E/AndroidRuntime(14095): java.lang.RuntimeException: Unable to start activity ComponentInfo{...}:
java.lang.IllegalStateException: The specified child already has a parent. You must call
removeView() on the child's parent first.
这是我的onCreateView代码:
switch (index) {
case 1:
rootView = frag_capture(rootView, inflater, container);
break;
case 2:
rootView = frag_notepad(rootView, inflater, container);
break;
}
并在相应的功能:
int resId = R.layout.<corresponding fragment>;
rootView = inflater.inflate(resId, container, false);
((ViewPager) container).addView(rootView, 0);
我想addView是错误的,但找不到如何更正。
编辑:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
if (observer != null) {
super.unregisterDataSetObserver(observer);
}
}
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase(l);
case 1:
return getString(R.string.title_section2).toUpperCase(l);
}
return null;
}
}
我发现我丢失了一部分代码,并将其从存储库中收回,但这并不是唯一的问题。
我使用的一些函数使用当前视图,而不是片段中的"rootView"。我添加了一个参数来在每个函数中使用它,它就工作了。
此外,这个设备最近有一个新的安全应用程序,它阻止了媒体捕获,并使我的应用程序崩溃。当我停用时,它又工作得很好。
谢谢你的回答,它让我纠正了一个旧错误,这个错误只在一个特定的设备上困扰着我,但非常烦人。