2016-07-31 54 views
0

我從活動移至新活動時出現以下錯誤。將活動移至下一活動之前發生錯誤

java.lang.IllegalStateException:您需要使用Theme.AppCompat主題(或後代)與本次活動

我的下一個活動輸入工具欄,但不是在主要活動。

我覺得工具欄會導致錯誤。我不知道是哪裏的錯誤,請指教我失去了什麼

activity.java

private void redirectMainActivity() { 
    startActivity(new Intent(this, ServiceActivity.class)); 
    finish(); 
} 

ServiceActivity.java

import android.content.Context; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 



public class ServiceActivity extends AppCompatActivity { 

Toolbar mToolbar; 
String ClientTAG = "Client"; 
String OptionTAG = "Option"; 
private Context context = null; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout_service); 
    mToolbar = (Toolbar) findViewById(R.id.toolBar); 
    mToolbar.setTitle("tool test"); 
    mToolbar.setTitleTextColor(Color.WHITE); 

    setSupportActionBar(mToolbar); 

} 

public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

我改變styles.xml和包括toolbar.xml到layout_service.xml

+0

什麼是錯誤的人? – Shaishav

+0

您應該包含帶有錯誤的LogCat – vincenzo

+0

07-31 23:27:59.566 19463-19463/com.example.park.mykakao E/AndroidRuntime:致命例外:主要 過程:com.example.park.mykakao,PID: 19463 java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.park.mykakao/com.example.park.mykakao.ServiceActivity}:java.lang.IllegalStateException:您需要使用Theme.AppCompat主題(或後裔)與此活動。 –

回答

0

如您所知,要使用Toolbar,您必須使用windowActionBar設置爲false的主題。否則,您將看到如下錯誤:

此活動已經有一個窗口裝飾提供的操作欄。請勿在您的主題中請求Window.FEATURE_SUPPORT_ACTION_BAR並將windowActionBar設置爲false以代替使用工具欄。

由於您的第一個活動沒有工具欄,但第二個活動沒有,所以我認爲您對它們都使用相同的主題。

然而,在活動您正在使用一個工具欄,你必須使用一個主題這臺<item name="windowActionBar">false</item>

所以,我認爲你可以做如下:

Android清單

套裝您的次要活動使用不同的主題。

<application 
    ... 
    android:theme="@style/AppThemePrimaryActivity"> 

    <activity android:name=".PrimaryActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".SecondaryActivity" 
     android:theme="@style/AppThemeSecondaryActivity" /> 
</application> 

styles.xml

爲輔助活動創建<item name="windowActionBar">false</item>一個主題:

<resources> 
    <style name="AppThemePrimaryActivity" parent="Theme.AppCompat.Light.DarkActionBar"> 
     ... 
    </style> 

    <style name="AppThemeSecondaryActivity" parent="AppThemePrimaryActivity"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 
</resources> 

這樣一來,您將次要活動始終使用一個主題,但沒有默認ActionBar和你將能夠設置Toolbar

+0

哇!你是對的!! –

+0

非常感謝! –

+0

很高興我能幫助你...問候 – W0rmH0le