Chr*_*erg 173 android android-3.0-honeycomb android-actionbar
我有一个奇怪的问题.我正在使用targetsdk 13制作应用程序.
在我的主要活动的onCreate方法中,我打电话getActionBar()
来设置我的操作栏.这在Android 3.2模拟器上运行时工作正常,但在使用Android 3.0和3.1时,该getActionBar()
方法返回null.
我发现这非常奇怪,我看不出有什么理由会这样做.这是模拟器的错误还是我需要做的事情,以确保我的应用程序有一个操作栏?
解决方案:
我想我找到了解决这个问题的方法.我没有使用setContentView来设置活动的布局.相反,我正在使用fragmentTransaction.add(android.R.id.content, mFragment, mTag)
向活动添加片段.这在3.2中运行良好,但在早期的蜂窝版本中,如果您不在方法中使用setContentView,则操作栏显然未设置onCreate()
.所以我通过setContentView()
在我的方法中使用方法修复它,onCreate()
并为它提供包含空FrameLayout的布局.我仍然可以fragmentTransaction.add(android.R.id.content, mFragment, mTag)
像以前一样使用该方法.
这不是最漂亮的修复,但它确实有效.
Ami*_*mir 219
可以用getSupportActionBar()
而不是getActionBar()
方法.
Jor*_*sys 46
import android.support.v7.app.ActionBarActivity;
public class MainActivity extends ActionBarActivity {
Run Code Online (Sandbox Code Playgroud)
getSupportActionBar()
而不是getActionBar()
import android.support.v7.app.ActionBarActivity;
Run Code Online (Sandbox Code Playgroud)
我建议使用:
import android.support.v7.app.AppCompatActivity
Run Code Online (Sandbox Code Playgroud)
kau*_*edi 35
在活动呈现其视图之前,您必须将窗口类型定义为操作栏.
使用
requestWindowFeature(Window.FEATURE_ACTION_BAR);
Run Code Online (Sandbox Code Playgroud)
在调用setContentView()方法之前.
Hit*_*ahu 33
如果您使用的是android.support.v7.app.AppCompatActivity
公共类HomeActivity扩展AppCompatActivity {
那你应该使用android.support.v7.app.ActionBar
ActionBar ab = getSupportActionBar();
Run Code Online (Sandbox Code Playgroud)
如果您使用的是android.support.v4.app.FragmentActivity
公共类HomeActivity扩展FragmentActivity {
那么你应该使用android.app.ActionBar
ActionBar ab = getActionBar();
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 android.support.v7.app.ActionBarActivity
公共类HomeActivity扩展ActionBarActivity {
你应该使用 android.support.v7.app.ActionBar
ActionBar ab = getSupportActionBar();
Run Code Online (Sandbox Code Playgroud)
Raj*_*dra 31
我遇到了上面的问题,其中getActionBar()
方法返回null.我打电话给getActionBar()
设置后setContentView()
仍然返回a null
.
我通过在Android Manifest文件中设置最初缺少的min-sdk版本来解决此问题.
<uses-sdk android:minSdkVersion="11" />
Him*_*ani 27
ActionBar需要应用程序或活动的主题才能拥有应用程序标题.确保您没有将您的应用程序或活动设置为Theme.NOTITLE.
<application
android:name="com.xxx.yyy"
android:debuggable="false"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/Theme.NoTitle"> // remove this line if you have this in your code
<activity
android:name="com.xxx.yyy.Activity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/Theme.NoTitle" // remove this line if you have in your code
android:windowSoftInputMode="adjustResize|stateHidden" >
Run Code Online (Sandbox Code Playgroud)
小智 19
import android.support.v7.app.AppCompatActivity;
Run Code Online (Sandbox Code Playgroud)
然后
extends AppCompatActivity
Run Code Online (Sandbox Code Playgroud)
然后用
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
SK9*_*SK9 18
这个答案很晚,但可能对从谷歌来的任何人都有所帮助:你可能需要申报
<item name="android:windowActionBar">true</item>
Run Code Online (Sandbox Code Playgroud)
在你的styles.xml
.它似乎false
可以是默认值.您还需要使用API 11或更高版本.
提示:如果您有一个自定义活动主题,您要在其中删除操作栏,请将android:windowActionBar样式属性设置为false.但是,如果使用主题删除操作栏,则窗口根本不允许操作栏,因此您以后无法添加它 - 调用getActionBar()将返回null.
nto*_*rnl 11
我有同样的问题,其中一个解决方案是setContentView()
在调用之前使用getActionBar()
.
但还有另一件事可以解决这个问题.我为应用程序指定了主题@android:style/Theme.Holo.Light
.
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light" >
...
</application>
Run Code Online (Sandbox Code Playgroud)
我认为<item name="android:windowActionBar">true</item>
可以使用其中的任何主题.
Muh*_*man 10
主要原因是使用不支持ActionBar的主题:
在清单文件中,在目标活动或应用程序元素中添加以下内容(如果要在整个应用程序中统一主题)
支持动作栏"Theme.AppCompat.Light"
或"Theme.Holo.Light"
...... 的主题示例
android:theme="@android:style/Theme.Holo.Light"
Run Code Online (Sandbox Code Playgroud)
最好将所有样式放入styles.xml
并在任何地方使用它,"@style/themName"
因此前一个样式将是
android:theme="@style/AppTheme"
Run Code Online (Sandbox Code Playgroud)
和styles.xml将具有以下内容:
<style name="AppTheme" parent="Theme.AppCompat.Light">
Run Code Online (Sandbox Code Playgroud)
提示:
"@android:style/Theme.Holo.Light.DarkActionBar"
在SDK版本14之前不支持.要允许您的应用支持最低特定版本的SDK,您可以在<app>
元素下添加以下内容:
<uses-sdk android:minSdkVersion="14" />
Run Code Online (Sandbox Code Playgroud)要在AndroidStudio中指定min SDK版本,您可以使用app的Gradle文件.
android{
defaultConfig{
minSdkVersion 14
targetSdkVersion 21
}
}
Run Code Online (Sandbox Code Playgroud)我遇到了这个问题.我正在检查版本号并仅在它大于或等于Honeycomb时启用操作栏,但它返回null.我发现原因和根本原因是我在values-v11文件夹下的style.xml中禁用了Holo Theme样式.
转到AndroidManifest.xml并替换
机器人:主题= "@风格/ AppTheme"
by
Run Code Online (Sandbox Code Playgroud)
机器人:主题= "@安卓风格/ Theme.Holo.Light.DarkActionBar"
归档时间: |
|
查看次数: |
156574 次 |
最近记录: |