我使用的Robolectric 3.3测试AppCompatActivity从com.android.support:appcompat-v7:23.4.0
我后:
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
Run Code Online (Sandbox Code Playgroud)
我创建了以下测试运行器:
public class ActivityTestRunner extends RobolectricTestRunner {
public ActivityTestRunner(Class<?> testClass) throws InitializationError {
super(testClass);
}
@Override
protected AndroidManifest getAppManifest(Config config)
{
return new AppManifest(Fs.fileFromPath(config.manifest()),
Fs.fileFromPath(config.resourceDir()),
Fs.fileFromPath(config.assetDir()));
}
private class AppManifest extends AndroidManifest
{
private static final String THEME = "@style/Theme.AppCompat";
public AppManifest(FsFile androidManifestFile, FsFile resDirectory, FsFile assetsDirectory) {
super(androidManifestFile, resDirectory, assetsDirectory);
}
public AppManifest(FsFile androidManifestFile, FsFile resDirectory, FsFile assetsDirectory, …Run Code Online (Sandbox Code Playgroud) 我试图运行我的Android应用程序时收到此错误.
奇怪的是:它只发生在Android应用程序与Jenkins一起构建(和签名)时.
当我使用eclipse的本地apk文件并将其推送到我的设备(或模拟器)时,一切正常
有任何想法吗?
编辑:AndroidManifest.xml
<application
android:name="at.my.test.App"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyActionBarTheme" >
<activity
android:name="SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="LoginActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="MyFirstActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="MySecondActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="MyThirdActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="WebActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="ErrorActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
而themes.xml文件:
<style name="MyActionBarTheme" parent="@style/Theme.AppCompat">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="android:homeAsUpIndicator">@drawable/ic_up_arrow</item>
<item name="android:windowActionBar">true</item>
<item name="android:windowBackground">@android:color/white</item>
<item name="android:windowContentOverlay">@null</item>
<!-- Support library compatibility -->
<item …Run Code Online (Sandbox Code Playgroud) 我正在使用anroid应用程序,因为它在黑暗的操作栏中可以正常运行,但是当我将其更改为无操作栏时,应用崩溃并在logcat中显示此错误。
我对样式和xml文件进行了更改,但仍然存在相同的问题。当我再次显示“黑暗”操作栏时,它开始正常工作。
我研究过的链接
这是我的风格文件
<resources>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColor">@color/colorText</item>
<item name="android:textColorHint">@color/colorText</item>
<item name="colorControlNormal">@color/colorText</item>
<item name="colorControlActivated">@color/colorText</item>
</style>
Run Code Online (Sandbox Code Playgroud)
<resources>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这是清单文件
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".activities.SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.WelcomeActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activities.LoginActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activities.RegisterActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activities.UsersListActivity"
android:screenOrientation="portrait" />
</application>
Run Code Online (Sandbox Code Playgroud)
我有一个充满自定义视图的应用程序.当我尝试以编程方式创建FAB时,它会抛出错误
引起:java.lang.IllegalArgumentException:您需要将Theme.AppCompat主题(或后代)与设计库一起使用.
这是我的代码.
private FloatingActionButton getFAB() {
FloatingActionButton fab = new FloatingActionButton(getContext());
fab.setBackgroundDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_add_white_24dp));
return fab;
}
Run Code Online (Sandbox Code Playgroud)
这是我的应用主题.
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
Run Code Online (Sandbox Code Playgroud)
请帮我.
我是Android编程的新手,并且遇到了一个简单的XML问题。我正在尝试将我的空活动之一变成全屏活动。我尝试将这行代码android:theme =“ @ android:style / Theme.NoTitleBar.Fullscreen”添加到我的android清单文件中,最终导致我的应用在启动时崩溃。
如果这也有帮助,则受影响活动的Java文件扩展了AppCompatActivity。我看到其他一些帖子提到这会造成问题,但是我无法解决我的问题。
请帮助我解决此问题,同时仍使活动全屏显示。任何帮助表示赞赏。谢谢!
XML格式
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light">
<activity android:name=".MainActivity"
android:label="Marks Calculator">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.APP_CALCULATOR" />
</intent-filter>
</activity>
<activity android:name=".Home_Activity"
android:label="Finite Time Manager">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</activity>
<activity
android:name=".Welcome_Activity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
错误日志
12-22 12:21:30.214 32475-32475/com.managergmail.time.finite.finitemanager02 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.managergmail.time.finite.finitemanager02, PID: 32475
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.managergmail.time.finite.finitemanager02/com.managergmail.time.finite.finitemanager02.Welcome_Activity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat …Run Code Online (Sandbox Code Playgroud) 对不起我的英语不好.我尝试改变动作栏collor.我有这个错误:
错误:检索项目的父项时出错:找不到与给定名称"@android:style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"匹配的资源.
我有minSdkVersion = 12
style.xml
<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
//this is error
<style name="MyActionBar" parent="@android:style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">#FF9D21</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
UPD
我添加了appcompat_v7,但它不起作用

UPD
现在style.xml看起来:
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">#FF9D21</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在清单中:
android:theme="@style/MyTheme" >
Run Code Online (Sandbox Code Playgroud)
我有错误:
03-05 12:45:33.860:E/AndroidRuntime(2006):java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.test6/com.example.test6.MainActivity}:java.lang.IllegalStateException:You需要在此活动中使用Theme.AppCompat主题(或后代).
如果我改变那样的清单:
android:theme="@style/Theme.AppCompat" >
Run Code Online (Sandbox Code Playgroud)
没有错误,但在此之后没有更改颜色操作栏
我正在使用Android Studio制作App。
我有一个
public class MainActivity extends Activity implements View.OnClickListener, OnCheckedChangeListener
Run Code Online (Sandbox Code Playgroud)
而且我需要在MainActivity中添加“ AppCompatActivity”。
我在Internet上进行了搜索,发现只有一个可以用于扩展。
所以我改为
public class MainActivity extends Activity implements View.OnClickListener, OnCheckedChangeListener, AppCompatActivity
Run Code Online (Sandbox Code Playgroud)
这和AppCompatActivity有一个错误,“此处需要接口”。
我怎么解决这个问题?
我是初学者,一直在使用树屋来学习。我在课程的早期阶段,当我启动应用程序时突然开始收到崩溃消息。我不确定发生了什么。我已经发布了我所知道的一切。抱歉,如果我错过了某些内容或发布了太多内容。
主要的:
package com.example.crystalball;
import android.R.string;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
private CrystalBall mCrystalBall = new CrystalBall();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Declare our View variables
final TextView answerLabel = (TextView) findViewById(R.id.textView1);
Button getAnswerButton = (Button) findViewById(R.id.button1);
getAnswerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String answer = mCrystalBall.getAnAnswer();
// Update label with dynamic answer
answerLabel.setText(answer);
}
});
}
@Override …Run Code Online (Sandbox Code Playgroud) android ×8
java ×3
crash ×1
implements ×1
jenkins ×1
logcat ×1
performance ×1
robolectric ×1
styles ×1
xml ×1