簡體   English   中英

反壓片段整理活動

[英]back press on fragment finishing activity

我有一個帶有片段的活動,它也可以導航。 當你回擊片段時,它應該返回到活動。 但是,當你在應用程序關閉時回擊。

現在這不是完全不受歡迎的行為,因為當你回擊主要活動時,我希望應用關閉。

執行此操作的主要活動代碼:

@Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.drawer_layout);

        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();

            this.finishAffinity();
        }
    }

片段上沒有onBackPressed方法

我怎樣才能這樣做,以便當你回擊片段時主要活動顯示但當你回擊活動時應用程序關閉

使用這樣的東西

適用於API等級5及更高版本

@Override
public void onBackPressed() {
  super.onBackPressed()
if (keycode == KeyEvent.KEYCODE_BACK) {
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                finish();
            }
}

比API 5更早

 public boolean onKeyDown(int keycode, KeyEvent event) {
        if (keycode == KeyEvent.KEYCODE_BACK) {
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                finish();
            }
        }
        return super.onKeyDown(keycode, event);
    }

請讓我知道這對你有沒有用

刪除this.finishAffinity(); 來自onBackPressed()

示例代碼

@Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.drawer_layout);

        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
            finish();

        }
    }

暫無
暫無

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

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