我有一个使用滑动视图的应用程序。我使用android studio提供的模板来创建滑动视图。 android studio提供的模板提供了3个片段,在它们之间滑动工作正常,我可以向后滑动,第四个在这些之间没问题。
我遇到的问题是创建第4个片段。我创建了Java文件,XML并更新了我的MainActivity
以考虑第4个选项卡。第4个选项卡显示在菜单中,我可以滑动到第4个选项卡。但是,当我尝试从第4个选项卡滑回到任何其他选项卡时,应用程序崩溃了。
我在Android Monitor中遇到的错误是:
12-07 14:08:11.951 2586-2586/com.example.application.placepicker
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.application.placepicker, PID: 2586
android.view.InflateException: Binary XML file line #11: Binary XML file
line #11: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #11: Error
inflating class fragment
Caused by: java.lang.IllegalArgumentException: Binary XML file line #11:
Duplicate id 0x7f0d00a1, tag null, or parent id 0xffffffff with another
fragment for com.google.android.gms.maps.SupportStreetViewPanoramaFragment
at
android.support.v4.app.FragmentManagerImpl.onCreateView
(FragmentManager.java:3447)
at
android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView
(LayoutInflaterCompatHC.java:47)
at android.view.LayoutInflater$FactoryMerger.onCreateView
(LayoutInflater.java:189)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at com.example.application.placepicker.Tab2.onCreateView(Tab2.java:29)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)
at android.support.v4.app.FragmentManagerImpl.moveToState
(FragmentManager.java:1299)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState
(FragmentManager.java:1528)
at android.support.v4.app.BackStackRecord.executeOps
(BackStackRecord.java:753)
at android.support.v4.app.FragmentManagerImpl.executeOps
(FragmentManager.java:2363)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether
(FragmentManager.java:2149)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps
(FragmentManager.java:2103)
at android.support.v4.app.FragmentManagerImpl.execSingleAction
(FragmentManager.java:1984)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss
(BackStackRecord.java:626)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate
(FragmentPagerAdapter.java:143)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)
at android.support.v4.view.ViewPager.setCurrentItemInternal
(ViewPager.java:668)
at android.support.v4.view.ViewPager.setCurrentItemInternal
(ViewPager.java:630)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:611)
at android.support.design.widget.TabLayout
$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2191)
at android.support.design.widget.TabLayout.dispatchTabSelected
(TabLayout.java:1164)
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1157)
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1127)
at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1426)
at android.support.design.widget.TabLayout$TabView.performClick
(TabLayout.java:1536)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
我的主要活动是:
public class TabbedActivity extends AppCompatActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabbed);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_tabbed, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Tab1 tab1 = new Tab1();
return tab1;
case 1:
Tab2 tab2 = new Tab2();
return tab2;
case 2:
Tab3 tab3 = new Tab3();
return tab3;
case 3:
Tab4 tab4 = new Tab4();
return tab4;
}
return null;
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Places";
case 1:
return "Street View";
case 2:
return "Steps";
case 3:
return "Weather";
}
return null;
}
}
}
我的Tab4.java是:
public class Tab4 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab4, container, false);
return rootView;
}
}
要找到解决方案,您需要了解的其他信息,请告知我们
由于
编辑: 这是tab4的XML文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.application.placepicker.TabbedActivity$PlaceholderFragment">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Weather Fragment" />
</RelativeLayout>
这是Tab1的XML工作正常:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.application.placepicker.TabbedActivity$PlaceholderFragment">
<TextView
android:id="@+id/section_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button_places"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/mybutton"
android:textColor="@android:color/white"
android:text="Launch place picker"
android:width="350dp"
android:layout_centerVertical="true"
android:layout_toEndOf="@+id/section_label" />
<TextView
android:id="@+id/tvPlace"
android:layout_marginTop="64dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:textAlignment="center"
android:textColor="#3F51B5"
android:textSize="24dp"
android:layout_below="@+id/textViewUserEmail"
android:layout_alignParentStart="true" />
</RelativeLayout>