簡體   English   中英

從 sdk 28 更新到 sdk29 后,Android Spinner 對話框彈出窗口不起作用

[英]Android Spinner dialog popup not working after update from sdk 28 to sdk29

我有一個帶有彈出對話框微調器的應用程序,它曾經在 SDK 28 上正常工作。 現在我已經遷移到 SDK 29 AndroidX 並且彈出窗口不再起作用。

Spinner_LockSetting = (Spinner) findViewById(R.id.Spinner_LockSetting);
SettingValueAdapter adapter = new SettingValueAdapter(this, android.R.layout.simple_spinner_dropdown_item, SettingValue.values());
Spinner_LockSetting.setAdapter(adapter);

        Spinner_LockSetting.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                                       int arg2, long arg3) {
                   // do something
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
        });

布局 XML

<Spinner
     android:id="@+id/Spinner_LockSetting"
     android:layout_width="100dp"
     android:layout_height="50dp"
     android:prompt="@string/app_name"
     android:spinnerMode="dialog" />

當我單擊微調器時,我得到了這個異常:

    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
        at com.android.internal.app.WindowDecorActionBar.getDecorToolbar(WindowDecorActionBar.java:251)
        at com.android.internal.app.WindowDecorActionBar.init(WindowDecorActionBar.java:196)
        at com.android.internal.app.WindowDecorActionBar.<init>(WindowDecorActionBar.java:180)
        at android.app.Dialog.show(Dialog.java:437)
        at androidx.appcompat.widget.AppCompatSpinner$DialogPopup.show(AppCompatSpinner.java:908)
        at androidx.appcompat.widget.AppCompatSpinner.showPopup(AppCompatSpinner.java:608)
        at androidx.appcompat.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:452)
        at android.view.View.performClickInternal(View.java:8137)
        at android.view.View.access$3700(View.java:888)
        at android.view.View$PerformClick.run(View.java:30250)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:246)
        at android.app.ActivityThread.main(ActivityThread.java:8425)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:596)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

當我將 spinnermode XML 設置為下拉時,它可以正常工作。 我不知道 NullPointerException 指的是哪里,我是否需要對 AndroidX 與 SDK28 中的對話框做更多的事情?

我做了一個干凈的活動來測試,似乎這個問題與一個主題有關。

android:theme="@android:style/Theme.Holo"

如果您想將微調器顯示為彈出對話框,請嘗試此操作

android:spinnerMode="對話框"

對於下拉

android:spinnerMode="dropdown"

如果他們不工作也添加這一行

style="@android:style/Widget.Spinner.DropDown"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM