标签: android-resources

Android资源$ NotFoundException:资源ID#0x7f030027

我正在研究我的android程序,当我尝试测试时,我突然开始收到错误"android.content.res.Resources $ NotFoundException:Resource ID#0x7f030027"我做的最后一个重大改变是通过操作栏添加支持库,但我已经工作得很好了.除此之外,我添加了一个新类,但即使我删除了类及其相关文件,错误仍然会弹出.我已经尝试清理项目并多次重启Eclipse无济于事.

这是堆栈跟踪,以防翻译中丢失任何内容:

01-21 19:05:53.125: E/AndroidRuntime(18599): FATAL EXCEPTION: main
01-21 19:05:53.125: E/AndroidRuntime(18599): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.blackhat.htmlparsingtest/com.blackhat.htmlparsingtest.MainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f030027
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.access$700(ActivityThread.java:143)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.os.Looper.loop(Looper.java:137)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.main(ActivityThread.java:4950)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at java.lang.reflect.Method.invokeNative(Native Method)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at java.lang.reflect.Method.invoke(Method.java:511)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) …
Run Code Online (Sandbox Code Playgroud)

android android-resources

40
推荐指数
6
解决办法
8万
查看次数

带有config的资源'attr/font'的重复值"

我现在真的知道为什么我得到这个error,我该如何解决它.其实我不确定在得到这个之前我做了什么error.

错误消息:/Users/hyun/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.0.1.arr/25699caf34fef6313d6ec32013a1a117f/res/values/values.xml错误:资源'attr/font的重复值'with config'.错误:此前定义的资源

/Users/hyun/Desktop/Laftel-Android/app/build/intermediates/incremental/mergeDbugResources/merged.dir/values/values.xml资源'attr/font'的重复值,其中包含先前在此定义的配置资源.

Java.util.concurrent.ExecutionException:com.android.tools.appt2.Aapt2Exception:AAPT2错误:检查详细信息任务':app :: mergeDebugResources'的执行失败.错误:java.utilconcurrentExcutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息

android android-resources

39
推荐指数
4
解决办法
4万
查看次数

strings.xml中点后的2位双参数?

我想在一个字符串中有一个参数strings.xml,这个参数应该是一个double值.所以我用%1$f.这里 - http://developer.android.com/reference/java/util/Formatter.html有很多例子,但是如果我想拥有一些double/float参数并且我只希望第二个拥有2位数后.呢?我尝试使用像%2$.2f或的组合%2.2$f.他们也没有工作.%.1f不起作用.那么,是否有人知道如何"自定义" float/double内部的值strings.xml?谢谢.

string android formatter android-resources

38
推荐指数
2
解决办法
3万
查看次数

Android资源选择布局 - 和值 - 不一致

我遇到的问题表明,为给定活动的layoutXML 选择的资源桶与从values文件夹中选择的资源不一致,尽管在每组文件夹中使用完全相同的资源限定符.

在我的应用程序的抽象父活动中放置一些日志代码后,我可以看到,当通过Nexus 7类型模拟器(Android 4.1)启动我的应用程序时,最小宽度确实是600dp,该layout-sw600dp-*文件夹用于获取活动的UI但是用于valuesis的文件夹values-large-*.我希望这能values-sw600dp-*为我提供关于活动所运行的资源桶的重要信息.

代码在我的应用程序的父活动中记录所有android.app.Activitys

  protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    final Configuration config = getResources().getConfiguration();
    Log.i(this.getClass().getSimpleName(), String.format("Smallest width is [%s]", config.smallestScreenWidthDp));
    configurationContext = SupportedDeviceConfiguration.fromResourceQualifer(getString(string.resourceQualifier));
    Log.i(this.getClass().getSimpleName(), String.format("Running under the [%s] configuration context.", configurationContext.getResourceQualifier()));
...
Run Code Online (Sandbox Code Playgroud)

记录在Nexus 7类型设备上运行此代码时的输出;

[Logging fluff] Smallest width is [600]
[Logging fluff] Running under the [layout-large-land] configuration context.
Run Code Online (Sandbox Code Playgroud)

我知道你在想什么 - 那个布局大片土地的衍生来自哪里?继续阅读......

背景

我正在试验这里概述的方法,这将允许我在运行时检查正在使用的资源桶.基本上我实现的方法具有以下资源限定符结构;

- res …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-screen-support android-resources

38
推荐指数
1
解决办法
2万
查看次数

R.java背后的概念是什么?

在android中,R.java用于提供对XML文件中定义的资源的访问.要访问资源,我们需要调用findViewById()传入要获取的资源的id的方法.

这与Spring类似,其中bean在XML上下文中定义,并通过使用应用程序上下文获取. context.getBean("beanId")

这提供了松散耦合,因为bean是在外部定义的,并且可以在不修改代码的情况下进行更改.

这让我很困惑.虽然Android看起来与spring相似,但它有什么优势?

  1. 有一个中间的R.java有什么意义呢?我们难道不能通过使用资源读取器/应用程序上下文直接从XML获取资源.例如findViewById("resourceId")
  2. 没有任何松耦合.由于R.java中的引用会自动生成,因此如何删除资源并放入新资源?
  3. 它遵循什么样的设计模式(如果有的话)?
  4. 使用IOC(如Roboguice)注入资源不是更好吗?为什么然后谷歌决定给我们这样一种奇怪的资源合作方式?

请原谅我的无知.我是一个新手Java开发人员,一次尝试太多东西.:-)感谢您的所有反馈.

architecture android r.java-file android-resources

37
推荐指数
2
解决办法
2万
查看次数

是否有针对Android的枚举字符串资源查找模式?

我有一个枚举,我需要将值显示为本地化字符串.我目前的做法是:

public enum MyEnum {
    VALUE1(R.string.VALUE1),
    VALUE2(R.string.VALUE2),
    .
    .
    VALUE10(R.string.VALUE10);

    private int mResId = -1;

    private MuEnum(int resId) {
        mResId = resId;
    }

    public String toLocalizedString(Resources r) {
        if (-1 != mResId) return (r.getString(mResId));
        return (this.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来做到这一点?如果我能以某种方式根据枚举值名称(即'VALUE1')查找资源,我会喜欢它.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="VALUE1"/>My string</string>
    <string name="VALUE2"/>My string 2</string>
    .
    .
    <string name="VALUE10"/>My string 3</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

编辑:为了将来参考,这是最适合我的解决方案:

public enum MyEnum {
    VALUE1, 
    VALUE2, 
    . 
    . 
    VALUE10; 

    /**
     * Returns a localized label used to represent this enumeration value. …
Run Code Online (Sandbox Code Playgroud)

enums android android-resources

36
推荐指数
3
解决办法
2万
查看次数

控制资源的视图可见性

我有一个包含两个ImageView的布局.我希望其中一个在纵向中可见,另一个在横向中可见.如何使用资源实现它?(我知道如何以编程方式设置它,但我需要使用资源来实现它的特定用途).

我试过类似的东西

在res/layout/may_layout.xml中:

...
<ImageView
      android:id="@+id/image1"
      android:visibility="@integer/visible_in_portrait"   <<-- is this allowed?
      ...
/>
<ImageView
      android:id="@+id/image2"
      android:visibility="@integer/visible_in_landscape"   
      ...
/>
Run Code Online (Sandbox Code Playgroud)

在res/values/integers.xml中:

...
<!-- NOTE: 0 and 8 are VISIBLE and GONE respectively -->
<integer name="visibile_in_portrait">0</integer>
<integer name="visibile_in_landscape">8</integer>
Run Code Online (Sandbox Code Playgroud)

在res/values-land/integers.xml中:

...
<integer name="visibile_in_portrait">8</integer>
<integer name="visibile_in_landscape">0</integer>
Run Code Online (Sandbox Code Playgroud)

但是当我试图给图像充气时,我得到一个运行时错误(索引超出范围).当我删除android:visibility语句时,程序运行但我看到两个图像.

问:将资源用作android:visibility属性的值的方法是什么?

(如果你想知道为什么以编程方式设置它将无法帮助我,它与使用文件uri位图的app小部件的自动landspace/portrait切换有关).

android android-imageview android-view android-resources

36
推荐指数
2
解决办法
1万
查看次数

Android测试原始资源

我在Android Studio中有以下文件夹结构:

??? androidTest
?   ??? java
?   ??? res
?       ??? raw
?           ??? test_file
??? main
    ??? java
    ??? res
        ??? raw
            ??? app_file
Run Code Online (Sandbox Code Playgroud)

我正在尝试访问test_fileandroidTest元素的原始文件夹中存在的资源.这是继承自以下内容的Robotium测试用例中的代码ActivityInstrumentationTestCase2:

InputStream is = this.getInstrumentation()
                 .getContext()
                 .getResources()
                 .openRawResource(R.raw.test_file);
Run Code Online (Sandbox Code Playgroud)

由于无法找到资源,Android Studio会引发参考错误.确切的错误是"无法解析符号test_file".

如何从androidTest资源包中存在的测试用例中引用此资源?

android robotium android-resources

36
推荐指数
2
解决办法
1万
查看次数

Android动画师与动画资源目录

我正在做一些适当利用Android资源目录的研究,以下内容对我来说并不清楚:

android animator资源目录和android anim资源目录有什么区别?

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

此外,我想我问的问题是属性动画和补间动画之间的区别是什么?

android android-resources

35
推荐指数
3
解决办法
1万
查看次数

Android:如何在特定区域设置中获取字符串而不更改当前区域设置

使用案例:记录显示给用户的错误消息.

但是,您不希望日志中的消息依赖于用户设备的区域设置.另一方面,您不希望仅为您的(技术)日志记录更改用户设备的区域设置.这可以实现吗?我在stackoverflow上找到了几个可能的解决方案:

但是,它们都会导致更改设备的区域设置(直到下一次配置更改).

无论如何,我目前的解决方法是这样的:

public String getStringInDefaultLocale(int resId) {
    Resources currentResources = getResources();
    AssetManager assets = currentResources.getAssets();
    DisplayMetrics metrics = currentResources.getDisplayMetrics();
    Configuration config = new Configuration(
            currentResources.getConfiguration());
    config.locale = DEFAULT_LOCALE;
    /*
     * Note: This (temporiarily) changes the devices locale! TODO find a
     * better way to get the string in the specific locale
     */
    Resources defaultLocaleResources = new Resources(assets, metrics,
            config);
    String string = defaultLocaleResources.getString(resId);
    // Restore device-specific locale
    new …
Run Code Online (Sandbox Code Playgroud)

android locale localization android-resources

34
推荐指数
2
解决办法
2万
查看次数