Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 屏幕方向上的弹出窗口_Android - Fatal编程技术网

Android 屏幕方向上的弹出窗口

Android 屏幕方向上的弹出窗口,android,Android,我正在使用弹出窗口。我面临的一个问题是,当屏幕方向改变时,PopupWindow会被破坏 我需要它不应该破坏屏幕上的方向变化 我为这个活动设置了这个 <activity android:name=".MainPageActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name" android:windo

我正在使用
弹出窗口
。我面临的一个问题是,当屏幕方向改变时,
PopupWindow
会被破坏

我需要它不应该破坏屏幕上的方向变化

我为这个活动设置了这个

<activity
        android:name=".MainPageActivity"
        android:configChanges="orientation|keyboardHidden"
        android:label="@string/app_name"
        android:windowSoftInputMode="adjustPan" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

我设置了Android
target=Android-13
,并在活动中进行了设置

android:configChanges=“方向|屏幕大小|键盘隐藏”

工作正常


谢谢。

试着像PopupWindow那样展示一下

final View parent = findViewById(R.id.{id});
parent.post(new Runnable() {
    @Override
    public void run() {
        mPopup.showAtLocation(parent, ...);
    }
});

这种情况会发生,因为活动会在旋转更改时重新启动(重新创建)。要纠正这一点,当弹出窗口第一次出现时,设置一个全局标志,或者可以从任何地方看到的东西(甚至可能是一个复选框,它被选中了等等)。然后在
onCreate
方法中,检查是否已选中此标志(如果为(true)),然后重新显示弹出窗口。
final View parent = findViewById(R.id.{id});
parent.post(new Runnable() {
    @Override
    public void run() {
        mPopup.showAtLocation(parent, ...);
    }
});