某些设备忽略清单中的字符串资源,解析错误
-
13-12-2019 - |
题
尝试在清单文件中设置方向,使用字符串限定符
android:screenOrientation="@string/orientation"
.
在4.0华硕平板电脑上工作,但在2.1野火和4.1 Galaxy S中失败。 问题是Infact链接到资源,如果在其工作中键入肖像。
IVE尝试更改平板电脑中使用的限定员以在手机上进行测试。这意味着所有设备都使用完全相同的代码,资源和布局。所以它不能拼写错误或建立问题。但它仍然在手机上而不是平板电脑。这似乎是Android中的另一个错误。
给出了下面的错误,logcat中没有任何内容
Installation error: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
Please check logcat output for more details.
Launch canceled!
.
清单部分
<activity
android:name=".MainActivity"
android:screenOrientation="@string/orientation"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
.
我知道我可以以编程方式做到。但是野火的另一个问题,而不是立即重启。相反,它等待设置的视图等。这不会发生在其他设备中。
Googled并找到了一些使用这些方法的其他人,但它们似乎没有发现任何问题。 http://capdroid.wordpress.com / 2012/07 / 21 /不同屏幕方向 - 不同屏幕尺寸
感谢
解决方案
尝试在清单文件中设置方向,使用字符串限定符
虽然当您在编辑器中键入时,它是一个字符串,它实际上存储为系统中的整数,因此来自字符串资源的转换不太可能是可靠的。坦率地说,我很惊讶它在那一张平板电脑上有所作用 - 设备制造商可能会增加支持,以处理他们自己的应用程序。
虽然您可以在清单中使用字符串资源,但它们需要成为字符串(例如,android:label
)的东西。
you 可能能够通过整数资源工作,查找用于这些常量的值(可能与他们的Java等价物相同)。
这似乎是Android中的另一个错误。
对我来说,这似乎是开发人员超出了记录行为的范围的另一个地方,然后想知道为什么未记录的行为不起作用。
其他提示
我有同样的问题,我使用整数值而不是字符串值,以及在“oncreate”方法中设置方向:
示例:
值/ strings.xml
<resources>
<integer name="orientation">1</integer>
...
.
值-sw600dp / strings.xml
<resources>
<integer name="orientation">0</integer>
</resources>
.
然后,在您的oncreate中:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setRequestedOrientation(getResources().getInteger(R.integer.orientation));
.
每个方向都有一个整数值,有关更多详细信息,请参阅此页面: http://开发人员.Android.com / Reference / Android / R.Attr.html#screenorientation
读取官方开发人员文档识别符号表单由字符串表示,通过将其放入字符串资源,将产生PARSE误差,如OP问题所示。
否,我不会跳到将其作为“虫子”分类为一个“虫子”,对每个和自己来说,一些制造商可以自由地实施自己的机制来处理它和其他人坚持谷歌方式源代码。