簡體   English   中英

Android后退按鈕按下檢查

[英]Android Back Button Pressed Check

因此,我目前正在開發回合制游戲應用程序。 它從每次轉身后的轉身角度顯示敬酒。 不過,奇怪的是,如果我按下“后退”按鈕,它將返回主菜單(上一個活動),但是吐司仍然會持續到它們超時為止。 同樣,如果我回擊兩次並且轉到主屏幕,則吐司仍然會顯示直到完成。 我想通過按下后退按鈕執行檢查或某種方式來取消這些吐司。 我也必須在視圖中執行此操作,我的視圖包含所有吐司和游戲的所有代碼,gameActivity僅具有onCreate可以為游戲創建視圖。 有任何想法嗎?

在您的活動中,您有重寫方法:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // do something
        yourView.notifyBackPressed();
        return false;
    }
    return super.onKeyDown(keyCode, event);
}

並且在您的View中,您必須實現方法,例如notifyBackPressed()

嘗試這個...

  1. 嘗試使用Toast.LENGTH_SHORT
  2. 您應該像這樣為自定義Toast設置持續時間(毫秒)。

    定制吐司:

      LayoutInflater inflater = getActivity().getLayoutInflater(); View layoutToast = inflater.inflate(R.layout.custom_toast_layout, (ViewGroup) getActivity().findViewById(R.id.toastcustom)); ((TextView) layoutToast.findViewById(R.id.texttoast)).setText("I'm custom toast"); final Toast myToast = new Toast( (EmployerNominationView) getActivity()); myToast.setView(layoutToast); myToast.setDuration(300); myToast.setGravity(Gravity.BOTTOM, 0, 45); myToast.show(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { myToast.cancel(); } }, 1000); 
  1. 產生吐司

     Toast toast; toast = Toast.makeText(getBaseContext(), "Messages", Toast.LENGTH_LONG); toast.show(); 
  2. 取消可以使用onKeyDown()或onBackPressed()的Toast。

     @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { toast.cancel(); return true; } return super.onKeyDown(keyCode, event); 

    }

//Try with making Toast Global and cancel the toast on Back Pr 
Toast mToast = new Toast(ApplicationContext);

public void onBackPressed(){
    mToast.cancel();
}

我發現了這一點,將使您對布局內通知的Android AppMsg(Crouton)庫實現感到煩惱 基於Toast通知。

我嘗試使用以下方法來檢測第一種方法在活動中按下動作條上的后退按鈕,第二種方法用於檢測移動硬件按鈕后退或取消活動按鈕。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:
            onBackPressed();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed() {
    setResult(RESULT_CANCELED);
    super.onBackPressed();
}

暫無
暫無

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

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