簡體   English   中英

如何檢查是否單擊了后退按鈕

[英]How to check if the back button was clicked

我有一個帶有按鈕的應用程序。 (見圖)。 僅當用戶未激活某個設置時才會出現此預覽。 如果他按下按鈕,他就會進入設置。 如果他按回去,他就會回到設置。 我現在想攔截這個“回”。
這個后退按鈕直接在智能手機上。 如何攔截此活動? 我找到了一些東西,不幸的是它沒有給我這個。 我有什么問題嗎? 還是有別的東西? 提前致謝。

  public class NfcSettingActivity extends AppCompatActivity {

    private Dialog epicDialog;
    private Button btn_nfc_navigate_setting;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nfc_setting);
        btn_nfc_navigate_setting = findViewById(R.id.btn_nfc_navigate_setting);
        btn_nfc_navigate_setting.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Settings.ACTION_NFC_SETTINGS));
            }
        });

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        System.out.println("back pressed");
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
        }
        return super.onKeyDown(keyCode, event);
    }
}

在此處輸入圖像描述

可能您忘記添加super.onBackPressed()

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

更新

可能您應該使用onOptionsItemSelected

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

甚至可能onKeyDown

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        onBackPressed();
    }
    return super.onKeyDown(keyCode, event);
}

我是這樣理解你的問題的:

NfcSettingActivity僅在某個設置(可能是 NFC)未激活時顯示。 如果未設置,用戶可以在活動中單擊您的按鈕,並將用戶帶到 Android 的 NFC 設置。 激活后,用戶單擊返回按鈕並將他/她帶回NfcSettingActivity 此時,您想知道 NFC 設置是否已成功激活。

這是您需要做的事情:您不需要按下后退按鈕。 您需要做的是再次檢查NfcSettingActivity是否處於恢復的 state 中。 NfcSettingActivity中,您需要具備以下條件:

@Override
protected void onResume() {
    super.onResume();

    // Do your NFC checking here!
    // Also, you might need to add a flag here to check if the user has been to the NFC Setting page already!
}

了解活動生命周期

在調用 super.onBackPressed(); 之前嘗試在后按上寫下你想要的東西在被覆蓋的方法 onBackPressed()

@Override
public void onBackPressed() {
    System.out.println("back pressed");
    super.onBackPressed();
}

也使用 log 而不是 println("")

暫無
暫無

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

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