簡體   English   中英

設備 BACK 鍵不起作用,所有其他鍵事件也沒有響應

[英]The device BACK key not working and all other key events not responding either

我的應用程序的 UI 完全是用代碼構建的。 這是一個刪除了activity_main.xmlEMPTY ACTIVITY ,並使用以下樣式:

<style name="myTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowBackground">@drawable/splashbg</item>
</style>

基本活動如下所示,以mainView (全局變量)作為根視圖:

class MyApp: AppCompatActivity(), View.OnTouchListener, OnMapReadyCallback {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        mainView = FrameLayout(this).apply {
            layoutParams = FrameLayout.LayoutParams(
                FrameLayout.LayoutParams.MATCH_PARENT,
                FrameLayout.LayoutParams.MATCH_PARENT
            )
            setBackgroundColor(Color.WHITE)
        }

        setContentView(mainView)
        supportActionBar?.hide()
    }

    override fun onBackPressed() {
        println("onBackPressed")        
        super.onBackPressed()        
    }

    override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
        println("dispatchKeyEvent")
        return super.dispatchKeyEvent(event)
    }

    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        println("onKeyDown")
        return super.onKeyDown(keyCode, event)
    }

    override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
        println("onKeyUp")
        return super.onKeyUp(keyCode, event)
    }

}

還應該注意的是,該應用程序已遷移到AndroidX ,因此正在使用以下庫:

import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat

除了鍵事件方法外,該應用程序按預期工作。 我正在嘗試攔截onBackPressed事件,但似乎沒有任何效果。 沒有事件響應,不是onKeyDown、onKeyUp、onBackPresseddispatchKeyEvent 控制台不會打印任何println輸出,而是每當我按下手機的物理BACK鍵時都會得到這些輸出:

2019-11-14 03:57:44.541 16056-16056/? I/GoogleInputMethod: onKeyDown() : keyCode = 4, event = KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=158, metaState=0, flags=0x48, repeatCount=0, eventTime=280842030, downTime=280842030, deviceId=5, source=0x101 }

2019-11-14 03:57:44.590 1434-1540/? D/BaseMiuiPhoneWindowManager: keyCode:4 down:false eventTime:280842082 downTime:280842030 policyFlags:22000002 deviceId:5 isScreenOn:true keyguardActive:false repeatCount:0

是否有一些我可能錯過的配置或設置?

TIA。


編輯:我還應該補充一點,當鍵盤可見時會發生此問題。 按下BACK鍵會關閉鍵盤,但不會觸發按鍵事件。

將此用於后按鍵

public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

對於設備后退按鈕嘗試使用

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
    // your code
    return true;
}

return super.onKeyDown(keyCode, event);

}

暫無
暫無

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

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