0

我正在尝试在项目中设置浓缩咖啡。
我在 Android Studio (1.5.1) 中新建了一个空活动项目,
运行没有问题

将 espresso 配置添加到项目和测试类中。
运行测试时我得到

  android.content.res.Resources$NotFoundException: Resource ID #0x7f030015
  at android.content.res.Resources.getValue(Resources.java:1266)
  at android.content.res.Resources.loadXmlResourceParser(Resources.java:2649)
  at android.content.res.Resources.getLayout(Resources.java:1082)
  at android.view.LayoutInflater.inflate(LayoutInflater.java:412)
  at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
  at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:358)
  at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279)
  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:253)
  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
  at com.adi.MainActivity.onCreate(MainActivity.java:11)
  at android.app.Activity.performCreate(Activity.java:5990)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
  at android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:494)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
  at android.app.ActivityThread.access$800(ActivityThread.java:151)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:135)
  at android.app.ActivityThread.main(ActivityThread.java:5254)
  at java.lang.reflect.Method.invoke(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

顺便说一句,ID 用于工具栏

测试类是

@RunWith(AndroidJUnit4.class)
public class MainActivityTest {

   @Rule
   public ActivityTestRule<MainActivity> mActivityRule =
        new ActivityTestRule<>(MainActivity.class);

   @Test
   public void test(){}
}

gradle.build 是

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.adi"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'

    androidTestCompile 'com.android.support.test:runner:0.3'
    androidTestCompile 'com.android.support.test:rules:0.3'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
    androidTestCompile 'com.android.support:appcompat-v7:23.1.1'
}

我究竟做错了什么?

4

1 回答 1

0

我已经在 StackOverflow 网站上发现了类似的问题。看看这个 Chris Banes 的解释和解决方案:

AppCompat 现在对主题窗口标志的期望更加严格,更接近于您从框架中获得的内容。

这背后的主要原因是支持 我们也在此版本中添加的AppCompatDialogs 。他们大量使用了 windowNoTitle标志,而 AppCompat 以前并没有太多关注。

因此,要解决您的问题,您有两种选择:

简单的方法是仅用Theme.AppCompat.NoActionBar作您的父主题。这总是会做正确的事情。

如果你不能这样做(也许你需要支持操作栏和没有操作栏),你应该做以下事情:

<style name="MyTheme" parent="Theme.AppCompat">
    ...
</style>

<style name="MyTheme.NoActionBar">
    <!-- Both of these are needed -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

你现在应该回到正轨了。

来自:升级到 AppCompat v22.1.0 现在得到 IllegalArgumentException: AppCompat 不支持当前主题功能

您会注意到,您不需要从build.gradle文件support.v7...依赖项中删除。Activity只需对您的主题进行一些更改。

编辑:也更改buildToolsVersion "22.0.1"23.0.2版本。

希望有帮助

于 2016-01-15T22:47:50.557 回答