2016-07-31 26 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