В моем приложении используется тема Holo.NoActionBar для Android, чтобы скрыть панель действий и отобразить активность.
Это отлично работает на эмуляторе, и мой Nexus 4, панель действий устройства скрыта.
однако, когда он запускается на HTC one, он игнорирует настройки темы Android и отображает панель действий. Он также может отображаться на некоторых других устройствах Samsung или Sony, которые имеют пользовательские скины OEM. Я убедился, что в java-файле активности или файле манифеста Android нет ссылок на панель действий или параметры меню.
Итак, я погуглил, как скрыть панель действий, и попробовал это Как скрыть панель действий перед созданием активности, а затем показать ее снова?
и написал код
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».
«Эта проверка анализирует управление методом и поток данных, чтобы сообщить о возможных условиях, которые всегда истинны или ложны, о выражениях, значение которых статически подтверждено как постоянное, и о ситуациях, которые могут привести к нарушению контракта с нулевым значением».
Хотя я новичок в разработке Android, я знаю, что NullPointerException не следует игнорировать.
Но в этом действии важно скрыть панель действий.
Как мне изменить этот код, чтобы он не был подвержен ошибкам??
ОБНОВЛЕНИЕ: и почему Holo.NoActionBar не работает с HTC one. Он по-прежнему отображает панель действий, при установке того же apk панель действий не отображается на Nexus 4.
Манифест Android:
<?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 и выше.
@style/AppTheme
- person ianhanniballake   schedule 18.08.2014