2013-04-21 1 views
0

블루투스를 켜기 위해 대화 상자 BluetoothAdapter.ACTION_REQUEST_ENABLE을 사용하려고했지만 사용했을 때 프로그램이 대화 상자가 끝날 때까지 기다리지 않았습니다.
사용자가 블루투스를 켜고 끌 수 있는지 여부를 알고 있어야합니다. 허용하지 않으면 이전 활동으로 돌아갈 수 있습니다. onActivityResult을 사용해도 결과를 얻지 못했습니다.블루투스 켜기를 요청할 때 프로그램이 중지되지 않음

대화 상자의 결과를 얻는 방법과 대화 상자의 결과를 기다리는 프로그램을 만들 수 있습니까?

private int REQUEST_ENABLE_BT = 100; 
... 
Intent btEnable = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
startActivityForResult(btEnable, REQUEST_ENABLE_BT); 

를 그냥 결과를 기다리지 않고 계속 그 후 :

대화는 내가 사용하려고했습니다.

+0

"않았나 너무 작동하여 onActivityResult과 결과에 geting하는 것은"-이 문장이 무슨 뜻인지 자세히 설명해주십시오. "효과가 없다"는 것은 무엇을 의미합니까? – CommonsWare

+0

난 그냥 onActivityResult를 호출하지 않았다. 내가 그것을 썼다처럼 일하는 befor 그러나 활동은 다만 계속되고 결과를 기다리지 않았다. –

+0

public void onActivitResult (int RequestCode, int ResultCode, 의도 데이터) { \t super.onActivityResult (RequestCode, ResultCode, Data); \t if (RequestCode == REQUEST_ENABLE_BT) .... } –

답변

0

하지만 난 그것을 사용할 때 대화 상자가

그것은 아닌가요 종료를 들어, programm에이 않았나 기다립니다. startActivity()startActivityForResult()은 비동기입니다.

난 그냥 onActivityResult를 호출하지 않았습니다.

onActivityResult()으로 전화하지 마십시오. onActivityResult()을 구현합니다. startActivityForResult()을 통해 시작한 활동으로 사용자가 완료되면 호출됩니다. 이 내용은 the documentation에 있습니다.

공개 무효 onActivitResult (int RequestCode, int ResultCode, 의도 데이터) {super.onActivityResult (RequestCode, ResultCode, Data); (requestCode가 == REQUEST_ENABLE_BT) ....}이 wasn't이

라는 경우 메소드 이름이 잘못 철자 때문이다. onActivitResult()이 아니라 onActivityResult()입니다. 이러한 종류의 문제를 감지하는 데 도움이되는 @Override 주석을 사용하십시오.

어떻게 블루투스가 활성화되어 있는지, onActivityResult()에서 대화

의 결과를 얻을 수 있습니다.

어떻게 대화 상자의 결과가 나타날 때까지 기다릴 수 있습니까?

그렇지 않습니다. Android는 이벤트 중심입니다. onActivityResult()을 통해 이벤트를 처리합니다.

+0

감사합니다. 이제 작동합니다. onActivityResult()에서 결과를 catch하고 결과가 ok이면 onActivityResult()에서 다음 대화 상자를 시작할 수 있습니다. 하여 onActivityResult() –

+0

나는이 그래서 지금 여기에 그것의 나머지 부분입니다 완료 둔화했다 : // 글로벌 REQUEST_CODE_1 = 0; REQUEST_CODE_2 = 1; onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); 의도 대화 상자 = 새 의도 (myclass.this, dialog1.class); startActivityForResult (dialog, REQUEST_CODE_1); } 하여 onActivityResult (INT requestCode가, INT의 resultCode, 텐트 데이터) { 경우 (requestCode가 == REQUEST_CODE_1) { 경우 (의 resultCode == RESULT_OK) { 의도 nextDialog = 새로운 텐트 (...); startActivityForResult (nextDialog, REQUEST_CODE_2); } } 경우 내가 답변으로 아닌 주석으로 그것을 할 수 있도록 내가 6 시간에 옳은 일을 게시 할 예정입니다 {...} } –

+0

확인 (requestCode가 == REQUEST_CODE_2) ... –

0

이제 코드에서 정답 ....

//Global 
REQUEST_CODE_1 = 0; 
REQUEST_CODE_2 = 1; 

onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    Intent dialog = new Intent(myclass.this, dialog1.class); 
    startActivityForResult(dialog, REQUEST_CODE_1); 
} 

onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
if(requestCode == REQUEST_CODE_1) 
{ 
    if(resultCode == RESULT_OK) 
    { 
     Intent nextDialog = new Intent(myclass.this, nextDialog.class); 
     startActivityForResult(nextDialog, REQUEST_CODE_2); 
    } 
} 

if(requestCode == REQUEST_CODE_2) 
{...} 
} 
관련 문제