0

私は Java と Android にまったく慣れていないので、優しくしてください :) Bluetooth を有効にするために ActivityForResult を開始しようとしていますが、ActivityForresult が終了するのを待たずに、メインのアクティビティが実行され続け、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();
    } 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

サブアクティビティが終了した後に関数 GetParedDevices を呼び出す場合は、その呼び出しをonActivityResult関数内に配置する必要があります。そうでない場合は、onCreate 関数が残りの文を実行し続けるため、呼び出されます。

それが役に立てば幸い :)

于 2013-06-16T19:55:04.263 に答える
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()で終了でき、その機能はBluetoothを有効にした場合にのみ実行されます。これはあなたが望むものだと思います

Bluetooth が有効で、Bluetooth が有効になっていない場合に実行したい場合は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()これは、関数内の残りのコードの実行を終了するため、これを行う必要がある方法の簡単な例にすぎません。私はそれをテストしていないか、すべてのコードを知っていますが、このようなものが役立つはずです.

于 2013-06-16T19:52:25.320 に答える