标签: android-resources

错误:以非位置格式指定的多个替换; 你的意思是添加formatted ="false"属性?

我有一个Android应用程序,它抛出BUILD进程跟随错误:

/home/Ralf/Projekte/University/android-sampleapp/sampleapp/build/intermediates/bundles/debug/res/values-de/values-de.xml错误:(88,5)以非位置格式指定的多个替换; 你的意思是添加formatted ="false"属性?错误:(88,5)意外的结束标记字符串

/home/Ralf/Projekte/University/android-sampleapp/sampleapp/build/intermediates/bundles/debug/res/values/values.xml错误:(106,5)以非位置格式指定的多个替换; 你的意思是添加formatted ="false"属性?错误:(106,5)意外的结束标记字符串

/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/merged/debug/values-de/values-de.xml错误:(131)以非位置格式指定的多个替换; 你的意思是添加formatted ="false"属性?错误:(131)意外的结束标记字符串

/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/merged/debug/values/values.xml错误:(1258)以非位置格式指定的多个替换; 你的意思是添加formatted ="false"属性?错误:(1258)意外的结束标记字符串错误:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:执行进程/opt/sdk/build-tools/26.0.2/aapt时出错参数{package -f --no-crunch -I /opt/sdk/platforms/android-27/android.jar -M/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/manifests/full /debug/AndroidManifest.xml -S/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/merged/debug -m -J/home/Ralf/Projekte/University/android-sampleapp/demo/build/generated/source/r/debug -F /home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/debug/resources-debug.ap_ -D/home/Ralf/Projekte/University /android-sampleapp/demo/build/intermediates/multi-dex/debug/manifest_keep.txt --custom-package com.ralfi.demo -0 apk --output-text-symbols/home/Ralf/Projekte/University/android -sampleapp/demo/build/intermediates/symbols/debug --no-version-vectors}错误:com.android.ide.comm on.process.ProcessException:使用参数执行进程/opt/sdk/build-tools/26.0.2/aapt时出错{package -f --no-crunch -I/opt/sdk/platforms/android-27/android. jar -M /home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/manifests/full/debug/AndroidManifest.xml -S/home/Ralf/Projekte/University/android-sampleapp/demo/build /中间体/ res/merged/debug -m -J/home/Ralf/Projekte /大学/ android-sampleapp/demo/build/generated/source/r/debug -F/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/debug/resources-debug.ap_ -D /home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/multi-dex/debug/manifest_keep.txt --custom-package com.ralfi.demo -0 apk --output-text-symbols/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/symbols/debug --no-version-vectors}错误:org.gradle .process.internal.ExecException:进程'命令'/opt/sdk/build-tools/26.0.2/aapt''以非零退出va结束 lue 1

当我点击字符串resrouces中的错误时,它指向:隐藏%02d:%02d min

但我需要翻译这些资源,为什么我得到这个?

android android-resources

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

检测可点击项目的投掷手势

想象一下有4个按钮的布局

 _______________________________
|              |                |
|      A       |       B        |
|______________|________________|
|              |                |
|      C       |       D        |
|______________|________________|
Run Code Online (Sandbox Code Playgroud)

我想检测整个布局上的投掷手势,但是当投掷开始时,没有检测到按钮.

我正在使用:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    gesturedetector= new GestureDetector(this, this);

    findViewById(R.id.touchContainer).setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.e("","TouchEvent");
            return gesturedetector.onTouchEvent(event);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

当没有可点击的项目时,如果从可点击的项目开始投掷则失败.

我怎么解决这个问题?提供50分的赏金,以获得完整的工作答案

java android android-layout android-resources

23
推荐指数
1
解决办法
5968
查看次数

格式字符串XXX不是有效的格式字符串,因此不应将其传递给String.format

我有android应用程序和资源中的这个字符串:

<string name="create_group_select_people">Select up to %1$d people!</string>
Run Code Online (Sandbox Code Playgroud)

这是从片段调用的:

Integer countMax = 5; //also tried just "int" - nothing changed
getResources().getString(R.string.create_group_select_people, countMax);
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:

Format string 'create_group_select_people' is not a valid format string so it should not be passed to String.format
Run Code Online (Sandbox Code Playgroud)

我无法理解什么是错的?当我启动应用程序时 - 它按字面意思显示"选择最多%1美元的人!"

java string android android-resources

23
推荐指数
5
解决办法
1万
查看次数

如何使用Android数量字符串(复数)?

我试图在参考资料中使用getQuantityString方法来检索基于android开发人员指南的数量字符串(复数)数量字符串(复数)

我得到的错误是

Error:(604) Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
Error:(604) Found tag </item> where </plurals> is expected
Run Code Online (Sandbox Code Playgroud)

当我设置复数如下

<plurals name="productCount">
    <item quantity="one" formatted="true">%1$d of %2$d product</item>
    <item quantity="other" formatted="true">%1$d of %2$d products</item>
</plurals>
Run Code Online (Sandbox Code Playgroud)

并尝试阅读如下

productIndexCountText.setText(getResources().getQuantityString(R.plurals.productCount, position, size));
Run Code Online (Sandbox Code Playgroud)

一种解决方法是将字符串分解为仅对字符串的最后部分使用复数并连接这两部分.但我试图尽可能避免这样做.

string android plural android-resources

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

从Assets文件夹设置通知声音

我将声音文件附加在资源文件夹中,以便在通知中播放声音,但我无法播放资源文件夹中的声音.

我有设置页面,用户可以从中设置通知声音,用户也可以播放声音.这部分完成了.我可以使用Media Player播放资源文件夹中的声音.我可以在通知创建时使用相同的逻辑,但是当用户点击通知时可能会发生问题,因为媒体播放器仍在播放声音.

我试过了

notification.sound = Uri.parse("file:///android_asset/Sound/Long/AlarmClock.mp3");
Run Code Online (Sandbox Code Playgroud)

也尝试过这样

notification.sound = Uri.parse("android_asset/Sound/Long/AlarmClock.mp3");
Run Code Online (Sandbox Code Playgroud)

但我的问题仍未解决.

有没有其他方法可以在资产目录中设置通知中的声音?

logcat的

01-10 09:57:01.509: ERROR/PlayerDriver(31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
01-10 09:57:01.509: ERROR/MediaPlayer(52): error (1, -4)
01-10 09:57:01.519: WARN/NotificationService(52): error loading sound for android_asset/Sound/Long/audio.mp3
01-10 09:57:01.519: WARN/NotificationService(52): java.io.IOException: Prepare failed.: status=0x1
01-10 09:57:01.519: WARN/NotificationService(52):     at android.media.MediaPlayer.prepare(Native Method)
01-10 09:57:01.519: WARN/NotificationService(52):     at android.media.AsyncPlayer.startSound(AsyncPlayer.java:64)
01-10 09:57:01.519: WARN/NotificationService(52):     at android.media.AsyncPlayer.access$200(AsyncPlayer.java:33)
01-10 09:57:01.519: WARN/NotificationService(52):     at android.media.AsyncPlayer$Thread.run(AsyncPlayer.java:99)
01-10 09:57:01.519: WARN/PlayerDriver(31): PVMFInfoErrorHandlingComplete
Run Code Online (Sandbox Code Playgroud)

或任何其他想法?请给我提示.

notifications android media-player android-assets android-resources

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

Android Studio将支持库中的字符串导出到APK

最近我从Eclipse切换到了Android Studio.我有一个具有多个模块依赖项的项目.一个依赖是支持库appcompat,包含如下:

dependencies {
    compile "com.android.support:appcompat-v7:19+"
}
Run Code Online (Sandbox Code Playgroud)

在Android文档中,我发现需要使用资源导入此库,这似乎可以正常工作.我在项目中使用库没有问题.

问题是,当我建立一个APK并运行aapt时,outpus说:

locales: '--_--' 'de' 'nl' 'pl' 'sl' 'fr' 'cs' 'es' 'it' 'ca' 'da' 'fa' 'ja' 'nb' 'af' 
'bg' 'th' 'fi' 'hi' 'vi' 'sk' 'uk' 'el' 'tl' 'am' 'in' 'ko' 'ro' 'ar' 'hr' 'sr' 'tr' 
'lt' 'pt' 'hu' 'ru' 'zu' 'lv' 'sv' 'iw' 'sw' 'fr_CA' 'lo_LA' 'en_GB' 'et_EE' 'ka_GE' 
'km_KH' 'zh_HK' 'hy_AM' 'zh_CN' 'en_IN' 'mn_MN' 'es_US' 'pt_PT' 'zh_TW' 'ms_MY'
Run Code Online (Sandbox Code Playgroud)

但事实并非如此,我的应用程序仅支持前8种列出的语言.当我将这个apk上传到Play时,它会向我显示以前版本的更改(使用eclipse构建),并且它表示我已经添加了47种语言,但同样,这不是真的.Play devconsole的屏幕截图: Play devconsole的屏幕截图

我在Google代码上发现了类似的问题,但没有回复,我希望解决这个问题,因为我必须将我的新APK上传到Play.

任何想法如何摆脱这47种其他语言,而图书馆必须保持与资源导入,以正常工作?

更新:谷歌代码上他们说这是现在的预期,他们希望添加一种方法来选择你想要包含在apk中的内容.

android apk android-resources android-support-library android-studio

22
推荐指数
1
解决办法
2616
查看次数

Android:为什么getDimension和getDimensionPixelSize都返回相同的?

我发现方法getDimension和getDimensionPixelSize令人困惑.

它会让我觉得getDimension会返回存储在维度中的实际值,例如10dp和getDimensionPixelSize将返回转换为px.

但两者似乎做同样的事情......

android android-resources

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

TypedValue转换为String

在我使用我的Android应用程序时随机点,LogCat充斥着以下5行的几十个重复:

10-26 12:53:30.372  21270-21270 W/Resources? Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d8}
10-26 12:53:30.372  21270-21270 W/Resources? Converting to string: TypedValue{t=0x1d/d=0xffe51c23 a=2 r=0x7f090047}
10-26 12:53:30.374  21270-21270 W/Resources? Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b008a}
10-26 12:53:30.375  21270-21270 W/Resources? Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d6}
10-26 12:53:30.375  21270-21270 W/Resources? Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d7}
Run Code Online (Sandbox Code Playgroud)

使用来自这个问题的接受答案的信息,我确定它试图将空值(0x0)解释为布尔值(0x12),这没有任何意义,因为我从不处理空值或布尔值.

日志中的资源ID(r = 0x?)指向两个布局之一中的视图/视图属性,我将在下面包含这些属性.

我引用这些资源ID的代码中唯一的位置是a)使用第一个布局的CursorAdapter,以及b)使用第二个布局的类,我也将在下面包含该代码.

我不确定这是否值得担心.我知道相关性并不意味着因果关系,但是当LogCat充斥着这些日志时,滚动浏览我的应用程序显然很笨拙.

任何有关弄清楚发生了什么的帮助将不胜感激.

布局文件#1:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="72dp"
    android:padding="16dp">

    <TextView
        android:id="@+id/event_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="Title"
        android:textSize="16sp"
        android:textColor="@color/primary_text_color"/> …
Run Code Online (Sandbox Code Playgroud)

android android-resources

22
推荐指数
1
解决办法
3910
查看次数

文本可组合维度资源不能用作 fontSize 参数

当我插入 fontSize =DimensionResource(id = R.dimen.textLabelTextSize) 时,其中 dimens 或 54sp 或 60sp 取决于设备,我在 Text() 上收到错误“无法使用提供的参数调用以下函数。 ” 但是当我输入像 54sp 这样的硬编码值时就很好了。奇怪的是填充修饰符维度资源(以 dp 为单位)工作正常。

       Text(
                text = textLabelItem.textLabel,
                modifier = Modifier
                    .padding(
                        start = dimensionResource(id = R.dimen.textLabelPaddingVertical),
                        top = dimensionResource(id = R.dimen.textLabelPaddingHorizontalTop),
                        end = dimensionResource(id = R.dimen.textLabelPaddingVertical),
                        bottom = dimensionResource(id = R.dimen.textLabelPaddingHorizontalBottom)
                    )
                    .background(colorResource(id = R.color.textLabelBg))
                    .border(
                        width = 2.dp,
                        color = colorResource(id = R.color.textLabelBorder),
                        shape = RoundedCornerShape(8.dp)
                    ),
                color = colorResource(id = android.R.color.background_dark),
                fontSize = dimensionResource(id = R.dimen.textLabelTextSize),
                fontWeight = FontWeight.Bold
            )
Run Code Online (Sandbox Code Playgroud)

android kotlin android-resources android-jetpack-compose

22
推荐指数
3
解决办法
6026
查看次数

随机android.content.res.Resources $ NotFoundException

有一段时间,我们从生产应用程序(通过Play商店)收到了奇怪的android.content.res.Resources $ NotFoundException异常.

尝试访问声明的字符串资源时,通常会出现该错误res/values.

举一个具体的例子,在我们的Application子类中,我们在onCreate()方法中加载一个字符串ressources (所以在任何应用程序启动时).

字符串资源实际存在,res/values并且生产应用程序在我们所有的测试设备上都能正常工作,因此它不能来自错误的R文件生成.

我们猜测它来自这样的事实:值没有在其他值包中重新定义(比如values-hdpi或其他包),并且将字符串值复制到所有包中实际上停止了异常.

尽管如此,根据Android文档,如果没有找到特定值,默认情况下会采用默认包的值,因此我们不理解为什么会出现此错误.

我们认为可能是定制的roms不能正常运行所以我想知道其他人是否有同样的问题或者其他人有其他建议.

android android-resources

21
推荐指数
1
解决办法
1062
查看次数