我正在尝试使用Intellij Idea
和AppCompat 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()
时,我收到此错误:
不兼容类型:
必需:android.support.v7.app.ActionBar
发现:android.app.ActionBar
我的活动中没有import android.app.ActionBar;
。
我试过了:
actionBar = android.support.v7.app.ActionBar.getActionBar();
和
actionBar = getSupportActionBar();
但是我得到了
无法解析方法getActionBar()//或getSupportActionBar()
如何使用appCompat库使用getActionBar()
? (或许还有一个我不知道的替代方案?)
修改
我还在此行中将FragmentActivity
替换为ActionBarActivity
:
public class MainActivity extends FragmentActivity //ActionBarActivity
但没有运气
答案 0 :(得分:3)
不良方法
调用较旧的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'
}
检查 Activity, AppCompatActivity, FragmentActivity, and ActionBarActivity: When to Use Which?
AppCompatActivity来自appcompat-v7库。主要是这个 提供动作栏的后退。由于本机动作栏是 在API级别11中添加,您不需要AppCompatActivity。
对于 Information How do I add a library (android-support-v7-appcompat) in IntelliJ IDEA
答案 1 :(得分:3)
首先,您必须扩展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);
要实现材料设计的许多功能,您应该在a。中使用它 CoordinatorLayout和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>
答案 2 :(得分:0)
更改您的导入
import android.support.v7.app.ActionBar;
insted of
import android.app.ActionBar;
并使用
public class MainActivity extends AppCompatActivity {
// ...
}