主要活动不等待子活动完成

时间:2013-06-16 19:48:55

标签: java android

我对Java和Android都很陌生,所以要温柔:) 我试图启动ActivityForResult来启用蓝牙,但似乎主要活动一直在运行并执行getPaireddevices而没有为ActivityForresult完成的wiaitng。这里我的错误是什么?

    @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();
    }
}

2 个答案:

答案 0 :(得分: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()可以完成,只有你启用蓝牙才会运行该功能,我相信这就是你想要的

如果您希望在null中启用蓝牙而不是onCreate()时运行,那么您可能希望将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()将完成执行函数中的剩余代码。我没有测试它或知道你的所有代码,但这样的事情应该会有所帮助。

答案 1 :(得分:0)

如果你希望在你的子活动结束后调用你的函数GetPariedDevices你必须把你的调用放在你的 onActivityResult 函数中,如果没有,它会被调用,因为onCreate函数将继续执行其余的的句子。

希望有所帮助:)