7

アプリで奇妙な問題が発生しています。私がここで尋ねた主な問題。問題はandroid:configChanges="keyboardHidden|orientation" 私のコードで機能していません。

@Override onConfigurationChanged()そのため、向きを管理するためにコード内のメソッドで管理するソリューションを見つけました。しかし、まだ問題は適切に解決されていません。

現在の問題は、onConfigurationChanged()向きを横から縦に変更すると 2 回呼び出されることです。

携帯電話の縦向きを横向きに変更すると、その変化と動作は変わりますが、ユーザーが電話の横向きを縦向きに移動する onConfigurationChanged()と、呼び出して同じ向きの状態が返され、2 回目の呼び出しで縦向きに戻ります。

コード :

@Override
    public void onConfigurationChanged(Configuration newConfig)
    {
        super.onConfigurationChanged(newConfig);

        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
             Log.e("On Config Change", "LANDSCAPE");

            Toast.makeText(getApplicationContext(), "L", Toast.LENGTH_LONG)
                    .show();
        } else 
        {
            Log.e("On Config Change", "PORTRAIT");
            Toast.makeText(getApplicationContext(), "P", Toast.LENGTH_LONG)
                    .show();
        }
    }

ログ

first mode its port mode , so change in land mode 

02-28 12:10:06.274: E/On Config Change(540): LANDSCAPE 
02-28 12:10:14.154: E/On Config Change(540): LANDSCAPE
// here after changed the land mode try to chage in port mode then its calling two times as you can see as per the log 
02-28 12:10:14.593: E/On Config Change(540): PORTRAIT
02-28 12:11:39.524: E/On Config Change(540): LANDSCAPE

同じ質問のもう 1 つのクエリ >>

方向を変更すると ( の呼び出し時)、現在のアクティビティが強制終了されonConfigurationChangedます。前の質問のように、異なるフォルダーに2つのレイアウトがあります。画面アクティビティを変更すると、すべてのデータが削除されます。ユーザーが電話の向きを変更したときに、そのデータを保存してユーザーに表示するにはどうすればよいですか。

4

1 に答える 1

0

2 回呼び出される方法はわかりませんが、アプリでのバグのある動作を回避するために 、現在受信した方向が以前の方向と同じである場合はonConfigurationChanged()、の実行を無効にすることができます。onConfigurationChanged()私のために働いた、それもあなたのために働くことを願っています:)

于 2017-04-06T10:31:19.787 に答える