2016-12-21 2 views
0

Я пытался использовать пользовательскую панель заголовка в своей деятельности. Ниже приводится код, который я использовалИсключение при использовании настраиваемой строки заголовка android

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    if (customTitleSupported) { 
     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_bar); 
    } 
    final TextView txtTitle = (TextView) findViewById(R.id.txtTitle); 
    if (txtTitle != null) { 
     txtTitle.setText("PikMyBox - Welcome to PikMyBox"); 
    } 
    setContentView(R.layout.activity_main); 
} 

custom_title_bar.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/txtTitle" 
android:layout_alignParentLeft="true"/> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/txtCustomText" 
    android:layout_alignParentRight="true"/> 
</RelativeLayout> 

styles.xml

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorSplash</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

Manifest.xml

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    ----- 

Я получаю следующее сообщение об ошибке, когда деятельность выполняется

android.util.AndroidRuntimeException: You cannot combine custom titles with other title features 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 
        at android.app.ActivityThread.access$800(ActivityThread.java:166) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5590) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
        at dalvik.system.NativeStart.main(Native Method) 
       Caused by: android.util.AndroidRuntimeException: You cannot combine custom titles with other title features 
        at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:302) 
        at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2975) 
        at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3241) 
        at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1821) 
        at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:363) 
        at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312) 
        at android.support.v7.app.AppCompatDelegateImplV7.findViewById(AppCompatDelegateImplV7.java:229) 
        at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:184) 
        at com.kommlabs.pikmybox.MainActivity.onCreate(MainActivity.java:25) 
        at android.app.Activity.performCreate(Activity.java:5447) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)  
        at android.app.ActivityThread.access$800(ActivityThread.java:166)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:136)  
        at android.app.ActivityThread.main(ActivityThread.java:5590)  
        at java.lang.reflect.Method.invokeNative(Native Method)  
        at java.lang.reflect.Method.invoke(Method.java:515)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)  
        at dalvik.system.NativeStart.main(Native Method)  

Как я могу решить эту проблему?

+2

http://stackoverflow.com/questions/27395263/android-util-androidruntimeexception-you-can not-comb-custom-titles-with-othe возможный дубликат – Raghunandan

+0

@Raghunandan он не показывает никакого исключения n ow, но он показывает как настраиваемую строку заголовка, так и строку заголовка по умолчанию на экране –

+0

@Raghunandan. Я также получаю 'final TextView txtTitle = (TextView) findViewById (R.id.txtTitle);' как null. Зачем ? –

ответ

0

Сменить android:windowNoTitle на false в ваших стилях.xml.

0

Ваш setContentView(R.layout.activity_main); находится ниже final TextView txtTitle = (TextView) findViewById(R.id.txtTitle);, т.е. почему вы получаете исключение. Вы инициализируете представление до его создания.

Изменить его

setContentView(R.layout.activity_main); 
final TextView txtTitle = (TextView) findViewById(R.id.txtTitle); 

Кроме того, в случае Вашего исключения с пользовательским заголовком использует этот стиль

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:windowActionBar">false</item> 
    <item name="android:windowNoTitle">false</item> 
</style> 

Как предложено здесь https://stackoverflow.com/a/27410003/3111083