0

我对 Java 和 Android 还是很陌生,所以要温柔:) 我试图启动 ActivityForResult 以启用蓝牙,但似乎主要活动继续运行并执行 getPaireddevices 而无需等待 ActivityForresult 完成。我的错误是什么?

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
    if (BtAdapter==null){
        Toast.makeText(getApplicationContext(), "No Bluetooth adapter...",0 ).show();
        finish();
    } else {
        if (!BtAdapter.isEnabled()){
            Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(intent, 1);
        }
    }
    GetPairedDevices();
}


    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    //super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_CANCELED){
        Toast.makeText(getApplicationContext(), "too bad..", Toast.LENGTH_LONG).show();
        finish();
    }
}
4

2 回答 2

0

搬进GetPairedDevices();你的onActivityResult()

类似的东西

  @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    //super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_CANCELED){
        Toast.makeText(getApplicationContext(), "too bad..", Toast.LENGTH_LONG).show();
        finish();
    }
    else if (resultCode == RESULT_OK)
    {
         GetPairedDevices();
    }

这种方式onCreate()可以完成,并且该功能只有在您启用蓝牙时才会运行,我相信这就是您想要的

如果您希望它在启用蓝牙而不是蓝牙的情况下运行nullonCreate()那么您可能需要将您的更改onCreate()为类似

       @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
    if (BtAdapter==null){
        Toast.makeText(getApplicationContext(), "No Bluetooth adapter...",0 ).show();
        finish();
    } elseif (BtAdapter != null && !BtAdapter.isEnabled()){
          Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
          startActivityForResult(intent, 1);
      }
    else{
     GetPairedDevices();
    }

}

笔记:

这只是一个快速示例,说明您需要如何执行此操作,因为onCreate()将完成函数中剩余代码的执行。我没有测试过它或知道你所有的代码,但这样的东西应该会有所帮助。

于 2013-06-16T19:52:25.320 回答
0

如果您希望在子活动完成后调用函数 GetPariedDevices,则必须将该调用放在onActivityResult函数中,如果没有,它将被调用,因为 onCreate 函数将继续执行其余的句子。

希望能帮助到你 :)

于 2013-06-16T19:55:04.263 回答