1

私はCSクラスのAndroidプロジェクトに取り組んでおり、模擬座標を入力する必要があります。向きと縦向きに別のレイアウトファイルを指定したい。layoutフォルダとlayout-landフォルダ内にフォルダがあり/resます。layoutフォルダー内のxmlファイルとlayout-landフォルダー内のxmlファイルの名前はまったく同じです。私はこの特定の活動を持っていないandroid:configChanges="orientation"か、android:screenOrientation="portrait"設定していませんが、他の活動のために設定しています。私もonConfigurationChangedこの活動を実施していません。

理論的には、layout-landこれらの設定で向きが変わると、画面はで指定されたレイアウトに変わるはずですよね?

ただし、そうではありません。レイアウトは同じままです。

横向きのレイアウトに別のレイアウトIDを与えてから、をandroid:id="@+layout/activity_mock_coor_land"実行して、強制的に変更しようとしましたsetContentView(R.layout.activity_mock_coor_land)"

ただし、このスタックトレースでエラーが発生しました。

AndroidRuntime(13964): FATAL EXCEPTION: main
AndroidRuntime(13964): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mixd.grounds.tour/com.mixd.grounds.tour.MockCoor}: android.content.res.Resources$NotFoundException: Resource ID #0x7f030009 type #0x12 is not valid
AndroidRuntime(13964):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
AndroidRuntime(13964):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
AndroidRuntime(13964):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
AndroidRuntime(13964):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
AndroidRuntime(13964):  at android.os.Handler.dispatchMessage(Handler.java:99)
AndroidRuntime(13964):  at android.os.Looper.loop(Looper.java:123)
AndroidRuntime(13964):  at android.app.ActivityThread.main(ActivityThread.java:4627)
AndroidRuntime(13964):  at java.lang.reflect.Method.invokeNative(Native Method)
AndroidRuntime(13964):  at java.lang.reflect.Method.invoke(Method.java:521)
AndroidRuntime(13964):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
AndroidRuntime(13964):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
AndroidRuntime(13964):  at dalvik.system.NativeStart.main(Native Method)
AndroidRuntime(13964): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030009 type #0x12 is not valid
AndroidRuntime(13964):  at android.content.res.Resources.loadXmlResourceParser(Resources.java:1874)
AndroidRuntime(13964):  at android.content.res.Resources.getLayout(Resources.java:731)
AndroidRuntime(13964):  at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
AndroidRuntime(13964):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
AndroidRuntime(13964):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
AndroidRuntime(13964):  at android.app.Activity.setContentView(Activity.java:1647)
AndroidRuntime(13964):  at com.mixd.grounds.tour.MockCoor.onCreate(MockCoor.java:21)
AndroidRuntime(13964):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
AndroidRuntime(13964):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
AndroidRuntime(13964):  ... 11 more

それが何を意味するのかよくわかりません。で私のレイアウトが見つかりませんlayout-landか?

誰かがこの問題を手伝うことができますか?

編集:マニフェスト:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mixd.grounds.tour" android:versionCode="1" android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <uses-library
        android:name="com.google.android.maps"
        android:required="true" />

    <activity
        android:name=".SplashScreen"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MapsActivity"
        android:configChanges="orientation|keyboardHidden"
        android:label="@string/title_activity_maps"
        android:theme="@android:style/Theme.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:configChanges="keyboardHidden"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Choice"
        android:label="@string/title_activity_choice"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MockCoor"
        android:label="@string/title_activity_mock_coor" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MockActivity"
        android:label="@string/title_activity_mock"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".NextCoor"
        android:label="@string/title_activity_next_coor" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".HistoryButton"
        android:label="@string/title_activity_history_button" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".DisplayHistory"
        android:label="@string/title_activity_display_history" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
</application>

</manifest>

4

2 に答える 2

0

レイアウトファイルに新しい名前を使用する場合は、すべてを最初から再構築する必要があります。つまり、すべてのビューを含むすべてを手動で再作成する必要があります。レイアウトランドを使用するときは、すべてに同じ命名規則を維持する必要があります。すべてのコードを投稿すると、私たちがお手伝いできるかもしれませんが、変更された構成でアクティビティ全体を再構築する必要があるため、新しく名前が付けられたファイルでlandファイルを使用しないでください。

于 2012-12-01T22:23:54.477 に答える
0

デバイスで「自動回転」機能が有効になっていることを確認してください。私のデバイス(Galaxy Gio)では、通知ウィンドウで有効にできます...

于 2012-12-02T00:03:52.160 に答える