致命的例外;膨胀类片段时出错

时间:2017-12-06 20:00:48

标签: java android android-fragments android-viewpager

我有一个使用滑动视图的应用程序。我使用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>

0 个答案:

没有答案