getActionBar 无法使用 AppCompat 库

getActionBar doesn't work using AppCompat lib

我正在尝试使用 Intellij IdeaAppCompat v7 library 创建 TabLayout android 应用程序。

import android.support.v7.app.ActionBar;

public class MainActivity extends FragmentActivity implements TabListener { 
...
private ActionBar actionBar;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
actionBar = getActionBar(); //Error line
...

}

使用 getActionBar() 时出现此错误:

Incompatibale types:

Required: android.support.v7.app.ActionBar

Found: android.app.ActionBar

我的 activity 中没有 import android.app.ActionBar;。 我试过了:

actionBar = android.support.v7.app.ActionBar.getActionBar();

actionBar = getSupportActionBar();

但我明白了

Can't resolve method getActionBar() //Or getSupportActionBar()

如何通过 appCompat 库使用 getActionBar()(或者有其他我不知道的选择?)

编辑

我还在这一行中用 ActionBarActivity 替换了 FragmentActivity

 public class MainActivity extends FragmentActivity //ActionBarActivity

但是运气不好

错误的方法

打电话给年长的 import android.support.v7.app.ActionBar;

如果您要扩展 AppCompatActivity/FragmentActivity 那么您就是在为旧的 Android 版本提供向后支持,为此您应该使用 getSupportActionBar().

阅读getSupportActionBar using FragmentActivity

public class MainActivity extends AppCompatActivity {
  // ...

  ....

 ActionBar actionBar =getSupportActionBar();
}

添加这个。

dependencies {
   // … 
   compile 'com.android.support:appcompat-v7:23.1.0'
}

勾选

AppCompatActivity is from the appcompat-v7 library. Principally, this offers a backport of the action bar. Since the native action bar was added in API Level 11, you do not need AppCompatActivity for that.

为了你的Information How do I add a library (android-support-v7-appcompat) in IntelliJ IDEA

更改您的导入

import android.support.v7.app.ActionBar;

取代了

import android.app.ActionBar;

并使用

public class MainActivity extends AppCompatActivity {
   // ...
}

首先,您必须扩展 AppCompatActivity 而不是 FragmentActivity

那你可以用getSupportActionBar().

为此,只需导入正确的依赖项:

compile 'com.android.support:appcompat-v7:23.1.1'

但重要的是要检查TabListener 是获取选项卡布局的错误方法此接口已在 API 级别 21 中弃用。

有了新的设计支持库,现在您可以使用新的TabLayout

只需将此依赖项添加到您的 build.gradle

compile 'com.android.support:design:23.1.1'

代码很简单:

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

要实现 material 设计的许多功能,您应该在 CoordinatorLayout and a AppBarLayout.

像这样:

 <android.support.design.widget.CoordinatorLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto"
         android:layout_width="match_parent"
         android:layout_height="match_parent">


     <android.support.design.widget.AppBarLayout
             android:layout_height="wrap_content"
             android:layout_width="match_parent">

         <android.support.v7.widget.Toolbar
                 ...
                 app:layout_scrollFlags="scroll|enterAlways"/>

         <android.support.design.widget.TabLayout
                 ...
                 app:layout_scrollFlags="scroll|enterAlways"/>

     </android.support.design.widget.AppBarLayout>

     <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

 </android.support.design.widget.CoordinatorLayout>