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

Java 主活动不等待子活动完成,java,android,Java,Android,我对Java和Android还很陌生,所以要温柔:) 我试图启动ActivityForResult以启用蓝牙,但似乎主活动保持运行并执行getPaireddevices,而不等待ActivityForResult完成。我犯了什么错 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout

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

移动
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();
    }
       @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()
可以完成,并且该功能只有在您启用蓝牙时才会运行,我相信这正是您想要的

如果您希望在启用蓝牙且在
onCreate()
中没有
null
的情况下运行它,那么您可能需要将
onCreate()
更改为

  @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();
    }
       @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()
将完成函数中剩余代码的执行。我还没有测试过它,也不知道你的所有代码,但类似的东西应该会有所帮助。

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


希望有帮助:)

是的,你可能是对的,但我计划在onCreate活动中编写更多代码,比如opensockets等等。。。在继续其他操作之前,我只需确保子活动已完成……然后您应该将它们放入活动Forresult()
中,或者将它们移动到最后一个
中,否则就像在我的示例中那样
。因此,我一直生活在一个梦中,主要活动将在继续之前等待结果。。。谢谢你打破了这个梦想:)