10

Вопрос по android – Переопределить кнопку возврата домой и назад, если логическое значение истинно

Мне было интересно, могу ли я переопределить действие кнопки «Назад» и «Домой» в некоторых случаях. Обычно эти кнопки должны реагировать так же, как и всегда, но в случае, если некоторые настройки верны, я хочу переопределить кнопки и позволить им вызывать мои собственные методы.

Я использую эти два метода, чтобы переопределить эти кнопки:

  @Override
  public void onBackPressed() {    
  // call my backbutton pressed method when boolean==true
    }

  @Override
  public void onAttachedToWindow()    {                                                                                       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);    
   super.onAttachedToWindow(); 
   // call my homebutton pressed method when boolean==true
   }
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от Diego
6 ответов
  • 1

    Error: User Rate Limit Exceeded

    boolean temp;
    
    @Override
            public void onBackPressed() {    // call my backbutton pressed method when boolean==true
    
    if(temp)
    //your methode
    else
    finish();
                }
    

  • 41

    I was wondering if I can override the action of the back and home butt

    on is some cases.

    Error: User Rate Limit ExceededHomeError: User Rate Limit Exceeded

    Error: User Rate Limit Exceededtoggle buttonError: User Rate Limit ExceededPowerError: User Rate Limit Exceeded

    public class DisableHardButton extends Activity {
        /** Called when the activity is first created. */
        TextView mTextView;
        ToggleButton mToggleButton;
        boolean isLock=false;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            mTextView=(TextView) findViewById(R.id.tvInfo);
            mToggleButton=(ToggleButton) findViewById(R.id.btnLock);
    
    
            mToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                isLock=isChecked;
                onAttachedToWindow();
            }
        });
       }
    @Override
        public boolean dispatchKeyEvent(KeyEvent event) {
    
            if ( (event.getKeyCode() == KeyEvent.KEYCODE_HOME) && isLock) {
                mTextView.setText("KEYCODE_HOME");
                return true;
            }
            else
                return super.dispatchKeyEvent(event);
        }
    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
    
            if( (keyCode==KeyEvent.KEYCODE_BACK) && isLock)
            {
                mTextView.setText("KEYCODE_BACK");
                return true;
            }
               else
                 return super.onKeyDown(keyCode, event);
        }
    @Override
        public void onAttachedToWindow()
        {  
            System.out.println("Onactivity attached :"+isLock);
            if(isLock)
            {   
                this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
                super.onAttachedToWindow();
            }
            else
            {
                this.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION);     
                super.onAttachedToWindow();
            }
        }
    }
    

    Error: User Rate Limit Exceeded

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/tvInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" />
    
        <ToggleButton
            android:id="@+id/btnLock"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textOff="UnLocked"
            android:textOn="Locked" />
    
    </LinearLayout>
    

  • 4

    Error: User Rate Limit Exceeded

    @Override
    public void onBackPressed() {    
        if (activated) {
           //doyourthing
        } else {
           super.onBackPressed()
        }
    }
    

  • 3

    Error: User Rate Limit Exceeded

     public void onBackPressed() {    // call my backbutton pressed method when boolean==true
    
          if (myCondition) {
              // take care of my needs
           } else 
                // call super to let the back behavior be "normal"
    
      }
    

  • 1

    Error: User Rate Limit Exceeded

    public void onBackPressed() {
    
            switch (screen) {
            case 1:
                screen = 99;
                setContentView(R.layout.menu);
                break;
    
            case 99:
                finish();
                break;
    
            }
            return;
        }
    

  • 2