getActionBar 无法使用 AppCompat 库
getActionBar doesn't work using AppCompat lib
我正在尝试使用 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()
时出现此错误:
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>
我正在尝试使用 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()
时出现此错误:
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>