1

由於tabhost已被棄用,我正在使用androidhive教程來設計我的選項卡。這是我第一次使用新功能。不過,我不斷收到此錯誤:我的工具欄在創建制表符時出錯

java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

我已閱讀解決方案,這裏類似的問題,所提出的解決方案是在主題設置一些屬性但是一切都看起來不錯,我styles.xml

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 
<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> <!--change here--> 
    <item name="windowNoTitle">true</item> 
</style> 
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

<style name="button_text" > 
    <item name="android:layout_width" >fill_parent</item> 
    <item name="android:layout_height" >wrap_content</item> 
    <item name="android:textColor" >#ffffff</item> 
    <item name="android:gravity" >center</item> 
    <item name="android:layout_margin" >3dp</item> 
    <item name="android:textSize" >30sp</item> 
    <item name="android:textStyle" >bold</item> 
    <item name="android:shadowColor" >#000000</item> 
    <item name="android:shadowDx" >1</item> 
    <item name="android:shadowDy" >1</item> 
    <item name="android:shadowRadius" >2</item> 
</style> 

</resources> 

下面是我的清單文件的一部分:

<activity 
     android:name=".SplashActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
    <activity android:name=".MaintenanceActivity" > 
    </activity> 
    <activity android:name=".ServicingActivity"> 
    </activity> 

這裏是activity_maintenance.xml

<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.application.sweetiean.stlmaintenance.MaintenanceActivity"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabGravity="fill"/> 
</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
</android.support.design.widget.CoordinatorLayout> 

最後,這裏是MaintenanceActivity.java

import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

import java.util.ArrayList; 
import java.util.List; 

public class MaintenanceActivity extends AppCompatActivity { 

private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 


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

    init(); 

} 


public void init(){ 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 

} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new OverviewFragment(), "Overview"); 
    adapter.addFragment(new BaseDataFragment(), "Base Data"); 
    adapter.addFragment(new TaskFragment(), "Task"); 
    adapter.addFragment(new ImageSignFragment(), "Images/Sign"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

我不能看到什麼是錯上要在我的代碼,因爲我沒有收到同樣的錯誤,當我啓動的主要活動,所以我相信它與標籤實現有關。如果有人能幫助我,我將不勝感激。謝謝。

+1

您的默認主題是從DarkActionBar擴展的,而只有在您的主要活動中設置了否操作欄。嘗試 X3Btel

+0

@ X3Btel它工作得很好。我認爲相關的活動將繼承主題,所以我沒有打算分配單獨的主題。對我的結局判斷不力。謝謝 –

回答

1

有關錯誤主題的錯誤:您嘗試設置操作欄,但它已經存在。所以:

<activity android:name=".MaintenanceActivity" > 
</activity> 

您沒有設置此活動的主題。只需添加:

android:theme="@style/AppTheme.NoActionBar" 

像你一樣對主要活動。 GL

0

您需要從改變你的風格AppTheme:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

到:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 

放棄已經存在的動作條。