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);

之后它就继续进行而不等待结果。

4

2 回答 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)  
{...}  
}
于 2013-04-22T15:12:42.950 回答
0

但是当我使用它时,程序并没有等待对话框结束

这是不应该的。startActivity()并且startActivityForResult()是异步的。

我只是没有调用 onActivityResult。

你不打电话onActivityResult()。你实施onActivityResult(). 当用户完成您通过 启动的活动时,它将被调用startActivityForResult()。这在文档中有所介绍。

public void onActivitResult(int RequestCode, int ResultCode, Intent Data) { super.onActivityResult(RequestCode, ResultCode, Data); if(RequestCode == REQUEST_ENABLE_BT).... } 这没有被调用

那是因为您拼写错误的方法名称。它是onActivityResult(),不是onActivitResult()。使用@Override注释来帮助检测这类问题。

我怎样才能得到对话框的结果

onActivityResult()中,查看是否启用了蓝牙。

以及如何让程序等待对话框的结果?

你没有。Android 是事件驱动的;您通过onActivityResult().

于 2013-04-21T14:06:28.723 回答