2012-03-27 92 views
1

我有一個複選框可以創建一個藍牙連接。問題是,當藍牙許可請求對話框出現,我選擇「否」,複選框仍然保持checked.How我可以從這個活動獲取請求代碼,並把複選框關閉,如果我得到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(); 
        } 
       } 
      } 
     }); 

回答

0
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; 
     } 

    } 
} 
0

試試這個:

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

你需要重寫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

過騎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 

} 
2
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode ==REQUEST_ENABLE_BT) { 
     if (resultCode == RESULT_CANCELED) { 
      turnBtOnOff.setSelected(false); 
     } 
    } 
} 
0

這是有點老了,但是今天我有同樣的問題,這是我的解決方案在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,因爲它不是執行的操作,而是用戶定義的活動。