1

タブレットアプリを開発しています。デバイスがロックされるまで、すべてが正常に機能しています。デバイスをロックして回転させると、強制終了が表示されます。

アプリを風景モードのみで強制的に実行しました。だから私はメニフェストでこの許可について言及しました。

 <activity
            android:name=".activity.LoginActivity"
            android:screenOrientation="landscape"
            android:windowSoftInputMode="adjustPan" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

そのため、デバイスをロックして回転させると、向きが変わり、この力が閉じます。

これを解決するために、この許可をメニフェストに追加しました。

android:configChanges="orientation"

そしてコードで:

 @Override
    public void onConfigurationChanged(Configuration newConfig) {
        // TODO Auto-generated method stub
        super.onConfigurationChanged(newConfig);
        Log.i("Log", "Configuration changes called");
        int orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
        // or = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
        setRequestedOrientation(orientation);
    }

onCreate()にこの行も追加しました

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("Log", "OnCreate");
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.lyt_login_main);
                ........
                }

しかし、まだ解決されていません。この問題を解決するために私を助けてください。

これは私が得ているエラーです:

12-17 11:13:57.877: E/AndroidRuntime(10462): FATAL EXCEPTION: main
12-17 11:13:57.877: E/AndroidRuntime(10462): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.marico.icp/com.marico.icp.activity.LoginActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f03000f
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3365)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.ActivityThread.access$700(ActivityThread.java:128)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1165)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.os.Looper.loop(Looper.java:137)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.ActivityThread.main(ActivityThread.java:4514)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at java.lang.reflect.Method.invokeNative(Native Method)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at java.lang.reflect.Method.invoke(Method.java:511)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at dalvik.system.NativeStart.main(Native Method)
12-17 11:13:57.877: E/AndroidRuntime(10462): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f03000f
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.content.res.Resources.getValue(Resources.java:1037)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2144)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.content.res.Resources.getLayout(Resources.java:870)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:273)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.Activity.setContentView(Activity.java:1835)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at com.marico.icp.activity.LoginActivity.onCreate(LoginActivity.java:77)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.Activity.performCreate(Activity.java:4465)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
12-17 11:13:57.877: E/AndroidRuntime(10462):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
12-17 11:13:57.877: E/AndroidRuntime(10462):    ... 12 more

前もって感謝します。

4

3 に答える 3

1

As @kumar said in comment,

I kept all the layout in the layout folder from layout-large-land, changed the menifest permission from android:configChanges="orientation" to android:configChanges="orientation|keyboardHidden"

Commented this method onConfigurationChanged(), commented this line too setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

And then I run the code. this solved the issue of the force close, but due to orientation change, the onCreate() method called and and I was loosing the entered data into the editText,

So for this I override the onSaveInstanceState(Bundle outState) method to my activity class. And did following.

I was saving the entered data in the hashmap, so in the onSavedInstanceState(), i did this.

@Override
    protected void onSaveInstanceState(Bundle outState) {

        outState.putSerializable("hashMap", hashMapSaveToDB);
        super.onSaveInstanceState(outState);

    }

And in the onCreate() checked for the savedInstanceState like this...

if(savedInstanceState != null)
        {
            hashMapSaveToDB = (HashMap<String, ArrayList<String>>) savedInstanceState.getSerializable("hashMap"); 
        }

This solved the loosing of the data at the time of onCreate() called.

Thanks to @kumar

于 2012-12-17T10:12:34.733 に答える
0

マニフェストのアクティビティでこれを使用します--

   android:configChanges="orientation|keyboardHidden"
于 2012-12-18T04:29:11.053 に答える
0

この行を削除してください android:configChanges="orientation"

何が起こっているかというと、方向が変更されると、アクティビティを再起動しようとし、方向が変更されるたびに oncreate になります。

このメソッドにコメント @Override public void onConfigurationChanged(Configuration newConfig) {

}

それは役に立たない

于 2012-12-17T07:14:30.347 に答える