当前位置: 首页 > 知识库问答 >
问题:

Iappcompat v21:material design ActionBar()充气异常错误充气类

晁绍辉
2023-03-14

正在尝试将在(appcompat v20)中制作的应用程序移动到新库中

使用:appcompat-v7:20工作很好

我做到了:

ActionBarActivity implements ActionBar.TabListener, ActionBar.OnNavigationListener

还有这个:

android.view.InflateException:二进制XML文件行#17:错误inflating类android.support.v7.internal.widget.ActionBarOverlayLayout

对android类进行充气时出错。支持v7.内部。小装置。ActionBarView


共有3个答案

诸葛康胜
2023-03-14

这是工作代码。。。copmactv7_api5使用。。。其他步骤相同

    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBar.Tab;
    import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity implements
        ActionBar.TabListener {

AppSectionsPagerAdapter mAppSectionsPagerAdapter;
ViewPager mViewPager;

@SuppressWarnings("deprecation")
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.admin_main_tab);

    // Create the adapter that will return a fragment for each of the three
    // primary sections
    // of the app.
    mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(
            getSupportFragmentManager());

    // Set up the action bar.
    final ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Set up the ViewPager, attaching the adapter and setting up a listener
    // for when the
    // user swipes between sections.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mAppSectionsPagerAdapter);
    mViewPager
            .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    // When swiping between different app sections, select
                    // the corresponding tab.
                    // We can also use ActionBar.Tab#select() to do this if
                    // we have a reference to the
                    // Tab.
                    actionBar.setSelectedNavigationItem(position);
                }
            });

    // For each of the sections in the app, add a tab to the action bar.
    for (int i = 0; i < mAppSectionsPagerAdapter.getCount(); i++) {
        // Create a tab with text corresponding to the page title defined by
        // the adapter.
        // Also specify this Activity object, which implements the
        // TabListener interface, as the
        // listener for when this tab is selected.
        actionBar.addTab(actionBar.newTab()
                .setText(mAppSectionsPagerAdapter.getPageTitle(i))
                .setTabListener(this));
    }
}

/**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the primary sections of the app.
 */
public static class AppSectionsPagerAdapter extends FragmentPagerAdapter {

    public AppSectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        switch (i) {
        case 0:
            return new AdminSettings();
        default:
            Fragment fragment = new AdminSettings();
            return fragment;
        }
    }

    @Override
    public int getCount() {
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return "Section " + (position + 1);
    }
}

@Override
public void onTabReselected(Tab arg0,
        android.support.v4.app.FragmentTransaction arg1) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab tab,
        android.support.v4.app.FragmentTransaction arg1) {
    mViewPager.setCurrentItem(tab.getPosition());

}

    @Override
    public void onTabUnselected(Tab arg0,
            android.support.v4.app.FragmentTransaction arg1) {
        // TODO Auto-generated method stub

    }

}
艾心远
2023-03-14

这个问题比看起来要深刻得多。

我的代码是正确的。该主题中的所有建议都是相关且正确的。

事实证明,外部库包含旧版本的support-v4,它不支持材料设计(appcompat-v7:21),而只支持appcompat-v7:20

这是ActionBar()InflateException错误inflating类的原因。

在所有外部库中更新support-v4将解决此问题。

我的身材。gradle在其他主题中:

多个dex文件定义Landroid/support/v4/。

乜清野
2023-03-14

要使用新的appcompat v21,您必须:

  • 扩展ActionBarActivity,而不是FragmentActivity
  • 使用getSupportActionBar()而不是getActionBar()
  • 使用从主题继承的主题。AppCompat。(例如Light或NoActionBar)

编辑:2015年4月23日

使用新的appcompat v22.1,您应该使用新的AppCompatActive而不是ActionBaractive

还有ActionBar。TabListener,ActionBar。OnNavigationListener:不推荐使用操作栏导航模式,内联工具栏操作栏不支持这些模式。考虑改用其他常见的导航模式。

源文档:https://developer.android.com/reference/android/support/v7/app/ActionBar.html#addTab(android.support.v7.app.ActionBar.Tab)

 类似资料:
  • 在尝试为Android使用新的时发生崩溃,并希望分享我的解决方案。 在android appcompat库中尝试新的TextInputField会使我的应用程序崩溃。这是我的布局xml。 我的错误是: 解决方案:将属性添加到,使lead标签如下所示:

  • 我正在努力升级我的gradle。当我将appcompat从1.0.2更新到1.1.0时,我的网络视图在某些手机上不再可用。(api 21和22)<有没有一种聪明的方法可以升级到1.1.0并且仍然让webview工作。 我得到了一个“android.view.InflateException:二进制XML文件行#1:错误inflating类”。我试图找到一种方法来更新我的模拟器上的webview。但

  • 我正在尝试嵌入浮动操作按钮。下面是我的xml文件 问题是Im会收到以下错误消息, Android.View.InflateException:二进制XML文件行#300:在Android.View.LayoutInflater.CreateView(LayoutInflater.CreateViewFromTag(LayoutInflater.java:702)在Android.View.Layo

  • 我有一个非常令人沮丧的错误,我无法解释。我创建了一个Android应用程序,使用Android AppCompat使其与旧版本兼容。这是我的主要活动布局文件:{Androidx}。 这是我的java文件: 这是我的xml文件: 这是我的gradle文件 }gradle文件中的依赖项 } 主要问题是我的应用程序说,不幸的是,应用程序已经停止。以下是“运行”选项卡中的详细信息 D/skia:-缩放位图

  • 是否有一个隐藏在Internet中的ByteBuffers方面的gzip放气库?允许我们推送原始数据然后提取放气数据的东西?我们已经搜索过了,但只找到了处理InputStreams和OutputStreams的库。 我们的任务是创建gzip过滤器,用于在管道架构中减少字节缓冲流。这是一个pull架构,其中最后一个元素从早期元素中提取数据。我们的gzip过滤器处理字节缓冲流,没有单个流对象可用。 我