初めまして、Android環境は初心者なので意味不明なことを言ってしまい申し訳ありません。
現在の状況
MainActivityとGraphActivityの 2 つのアクティビティを持つアプリケーションを実行しています 。
また、両方のアクティビティを知ってもらいたいクラス BLEConnection があります。MainActivity にはボタンが 1 つしかありません。
ボタンの onClick():
GraphActivity graph_activity = new GraphActivity();
BLEConnection radino_right = new BLEConnection(mainThread, graph_activity);
btnConnect.setText("Connecting");
クラス BLEConnection には BluetoothGattCallback() オブジェクトがあり、 onConnectionStateChange() を検出すると、MainActivity で実行されているスレッドを呼び出します。
Bluetooth デバイスが接続されている場合 (文字列 connect_status = "Connected")、このスレッドはインテントを作成し、startActivity() を実行します。
MainActivity で実行中のスレッド:
Thread mainThread = new Thread(new Runnable() {
@Override
public void run() {
if(connect_status.equals("Connected")){
Intent nextScreen = new Intent(getApplicationContext(), ((Object) graph_activity).getClass());
//startActivityForResult() instead of startActivity() because I want to finish() it from the MainActivity if the connection with the device is closed.
startActivityForResult(nextScreen,1);
}
else{
if(nextScreen != null){
finishActivity(1);
}
}
}
});
トラブルシューティング
私が抱えているトラブルシューティングは、MainActivity に属し、BLEConnection に渡したオブジェクト graph_activity が、startActivity() メソッドで起動される実際の GraphActivity と一致しないことに気付いたことです。
どうすればこれを解決できるか知っている人はいますか?
アクティビティ オブジェクトを作成するときに「新規」を実行すると、新しいスレッド GraphActivity が生成され、startActivity() を呼び出すと、同じクラスの別のスレッドが生成されますが、以前に作成したオブジェクトとはリンクされていないと思います前。それを解決する方法がわかりません。