gpt4 book ai didi

java - 如何使用 Holo.NoActionBar 主题隐藏 HTC one 上的操作栏

转载 作者:行者123 更新时间:2023-12-01 12:38:25 24 4
gpt4 key购买 nike

我的应用程序使用 android Holo.NoActionBar 主题来隐藏操作栏并显示 Activity 。

这在模拟器和我的 Nexus 4 上运行良好,设备操作栏被隐藏。

但是,当它在 HTC one 上运行时,它会忽略 Android 主题设置并显示操作栏。它也可能会显示在其他一些具有自定义 OEM 皮肤的三星或索尼设备上。我已确保 Activity java 文件或 Android list 文件中没有对操作栏或菜单选项的引用。

所以我用谷歌搜索了如何隐藏操作栏并尝试了这个 How to hide action bar before activity is created, and then show it again?

并编写了代码

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();
setContentView(R.layout.activity_my);

http://developer.android.com/guide/topics/ui/actionbar.html

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
setContentView(R.layout.activity_my);

但是,在这两种情况下,IDE 都会显示一条警告,指出方法调用“actionBar.hide()”可能会产生“java.lang.NullPointerException”

“此检查分析方法控制和数据流,以报告始终为真或假的可能条件、其值被静态证明为恒定的表达式以及可能导致可空性契约(Contract)违规的情况”

虽然我是android开发的新手,但我知道NullPointerException不应该被忽略。

但是在这个 Activity 中,隐藏操作栏很重要。

如何修改此代码以使其不易出错?

更新:为什么 Holo.NoActionBar 不能与 HTC one 一起使用。它仍然显示操作栏,而安装相同的 apk 在 Nexus 4 上不显示操作栏

Android list :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxxxxxxx.xxxxxxxxx" >

<uses-permission android:name="android.permission.VIBRATE" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MyActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
.
.
lots of non-relevant activities
.
.

<activity
android:name=".Setting"
android:label="@string/title_activity_setting"
android:parentActivityName=".MyActivity"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xxxxxxxxx.xxxxxxxxxx.MyActivity" />
</activity>
<activity
android:name=".t1"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name=".t2"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name=".t3"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name=".t4"
android:screenOrientation="portrait"
>
</activity>
<activity
android:name=".t5"
android:label="@string/title_activity_t5"
android:screenOrientation="portrait"
android:parentActivityName=".MyActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xxxxxxxxxx.xxxxxxxxxx.MyActivity" />
</activity>
</application>

</manifest>

t1.java,没有 Actionbar.hide()

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;


public class t1 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_t1);

RelativeLayout rl = (RelativeLayout) findViewById(R.id.rel1);
rl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newactivity= new Intent(getApplicationContext(), t2.class);
startActivity(newactivity);
}
});
}


}

和 t2,t3,t4,t5 有类似的代码

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.xxxxxxxxxx.xxxxxxxx.t1"
android:background="@drawable/finalp2"
android:id="@+id/rel1">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_marginTop="40dp"
android:background="@drawable/bat"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="40dp" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageViewbottom"
android:background="@drawable/bat"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="40dp"
android:layout_marginBottom="42dp" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="@android:drawable/ic_media_pause" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView4"
android:layout_below="@+id/imageView"
android:layout_toRightOf="@+id/imageView"
android:layout_toEndOf="@+id/imageView"
android:layout_marginTop="112dp"
android:background="@drawable/ball1" />


</RelativeLayout>

我如何选择主题:http://s16.postimg.org/6vuyjhwth/noactionbar.png

我还没有创建任何其他 style.xml 文件,我错过了什么吗?如果我确实错过了一些东西,它在 Nexus 4 上工作得如何?为什么它在 IDE 中显示时没有操作栏?

我的应用使用 SDK 版本 15 及更高版本

最佳答案

您的 Activity t1AndroidManifest.xml中没有应用任何主题,因此它使用您的应用程序的默认主题 - 在您的情况下,@ style/AppTheme 其中包括一个操作栏。在 list 中设置主题:

<activity
android:name=".t1"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
>
</activity>

或者专门为无操作栏的情况制作一个新主题:

<style name="AppTheme.NoActionBar" parent="android:Theme.Holo.Light.NoActionBar">
<!-- Customize your theme here. -->
</style>

并使用它:

<activity
android:name=".t1"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
>
</activity>

关于java - 如何使用 Holo.NoActionBar 主题隐藏 HTC one 上的操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25354157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com