我尝试使用对话框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 :(得分:0)
但是当我使用它时,程序没有等待对话结束
不应该这样。 startActivity()
和startActivityForResult()
是异步的。
我没有打电话给onActivityResult。
您不会致电onActivityResult()
。您实施onActivityResult()
。当用户完成您通过startActivityForResult()
启动的活动时,将调用它。 the documentation中介绍了这一点。
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()
处理活动。
答案 1 :(得分: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)
{...}
}