Как я могу получить код результата из действия? - PullRequest
1 голос
/ 27 марта 2012

У меня есть один флажок, который создает соединение Bluetooth.Проблема заключается в том, что когда появляется диалоговое окно запроса разрешения Bluetooth и я выбираю No, флажок по-прежнему остается установленным.

Как я могу получить код запроса из этого действия и снять флажок, если я получаюRESULT_CANCELED?

CheckBox turnBtOnOff=(CheckBox)findViewById(R.id.checkBox1);
turnBtOnOff.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            if (isChecked)
            {
                if(!mBluetoothAdapter.isEnabled())
                {
                    Intent enableBtIntent=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);  
                    //myAddress=mBluetoothAdapter.getAddress();
                    //Toast.makeText(getBaseContext(), myAddress, Toast.LENGTH_SHORT).show();   
                    }
                }
                else
                {
                    if(mBluetoothAdapter.isEnabled())
                    {
                        mBluetoothAdapter.disable();
                    }
                }
            }
        });

Ответы [ 6 ]

2 голосов
/ 27 марта 2012
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode ==REQUEST_ENABLE_BT) {
        if (resultCode == RESULT_CANCELED) {
            turnBtOnOff.setSelected(false);
        }
    }
}
0 голосов
/ 19 марта 2015

Это немного старовато, но у меня сегодня была такая же проблема, это мое решение, работающее на Android 4.4.2

@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {      
    if(resultCode==RESULT_FIRST_USER){
        //custom request is BLUETOOTH_REQUEST_DISCOVERABLE
                        if(requestCode==BLUETOOTH_REQUEST_DISCOVERABLE){
                            //Do something
                        }
                    }
 }

результат не RESULT_OK, потому что это не операция, которую нужно выполнить, а определенная пользователем активность.

0 голосов
/ 27 марта 2012

Переопределить метод onActivityResult():

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
        //check for the requestcode here and check/uncheck the checkbox 

}
0 голосов
/ 27 марта 2012

вам нужно переопределить onActivityResult , чтобы получить результаты от действия:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //if 12345 is the int value you used to start bluetooth activity then
    if(requestCode == 12345){
        if(resultCode == RESULT_OK){
            //do whatever you want
        }
        else{
            //do whatever you want
        }
    }
}
0 голосов
/ 27 марта 2012

попробуйте это:

private static int RESULT_OK=111;
private static int  PICK_CONTACT_REQUEST=112;

protected void onActivityResult(int requestCode, int resultCode,
             Intent data) {
         if (requestCode == PICK_CONTACT_REQUEST) {
             if (resultCode == RESULT_OK) {
                 // ....do your code here
                 // 

             }
         }
     }

удачи

0 голосов
/ 27 марта 2012
 protected void onActivityResult(int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case REQUEST_ENABLE_BT: {
            if (resultCode == RESULT_CANCELED) {
                ......
            }
            break;
        }

    }
 }   
...