移动到活动之前到下一个活动时发生错误

时间:2016-07-31 14:15:35

标签: android

当我从活动转移到新活动时,我遇到以下错误。

  

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

1 个答案:

答案 0 :(得分:0)

如您所知,为了使用Toolbar,您必须使用windowActionBar设置为false的主题。否则,您将收到如下错误:

  

此活动已有窗口装饰提供的操作栏。请勿在主题中请求Window.FEATURE_SUPPORT_ACTION_BAR并将windowActionBar设置为false以使用工具栏。

由于您的第一个Activity没有工具栏但第二个Activity没有,我认为您对它们使用相同的主题。

但是,在您使用工具栏的活动中,您必须使用设置<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