2

文字列修飾子を使用して、マニフェスト ファイルで向きを設定しようとしています

android:screenOrientation="@string/orientation"

4.0 asus タブレットで動作しますが、2.1 山火事と 4.1 Galaxy S の両方で失敗します。

タブレットで使用されている修飾子を変更して、電話でテストしてみました。これは、すべてのデバイスでまったく同じコード、リソース、およびレイアウトが使用されることを意味します。したがって、スペルミスやビルドの問題ではありません。ただし、タブレットではなく、電話ではまだ失敗します。これは、Android のもう 1 つのバグのようです。

以下のエラーが表示されますが、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>

私はプログラムでそれを行うことができることを知っています。しかし、山火事には別の問題があり、すぐには再起動しません。代わりに、ビューがセットアップされるなどを待ちます。これは他のデバイスでは発生しません。

Googleで検索して、メソッドを使用している他の人をいくつか見つけましたが、問題は発見されていないようです. http://capdroid.wordpress.com/2012/07/21/different-screen-orientation-on-different-screen-size

ありがとう

4

3 に答える 3

5

私は同じ問題を抱えていましたが、文字列値の代わりに整数値を使用して解決し、「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://developer.android.com/reference/android/R.attr.html#screenOrientation

于 2012-11-12T14:50:29.083 に答える
3

文字列修飾子を使用して、マニフェスト ファイルで向きを設定しようとしています

エディターに入力したときは文字列ですが、実際にはシステムに整数として格納されているため、文字列リソースからの変換は信頼できる可能性が低いです。率直に言って、その 1 つのタブレットで動作することに驚いています。デバイス メーカーは、独自のアプリの 1 つを処理するために、これに対するサポートを追加した可能性があります。

マニフェストで文字列リソースを使用できますが、それらは文字列として格納されるものである必要があります (例: android:label)。

これらの定数に使用される値を調べて、これを整数リソースで動作させることができるかもしれません(おそらく Java の同等物と同じです)。

これは、Android のもう 1 つのバグのようです。

私には、これは、開発者が文書化された動作の範囲を超えて、なぜ文書化されていない動作が機能しないのか疑問に思っている、もう 1 つの場所のように思えます。

于 2012-07-28T19:57:53.197 に答える
2

公式の開発者向けドキュメントを読んで、文字列で示される表記形式を特定します。これを文字列リソースに入れると、OPの質問に示されているように解析エラーが発生します。

いいえ、私はそれを「バグ」として分類するという結論に飛びつくことはありません。それぞれに、そして独自に、それを処理するための独自のメカニズムを自由に実装できるメーカーもあれば、ソースコードのGoogleの方法に固執するメーカーもあります。

于 2012-07-28T20:05:59.313 に答える