Можно ли вызвать метод вне класса, используя существующий экземпляр? Я хочу читать данные с сенсора и пытаться отправить его через BT-соединение (уже подключенное и отправляющее другую информацию), но я не могу вызвать метод write() из «onSensorChange».Как вызвать метод вне класса
Я могу только позвонить write() и отправить сообщение в «private class ConnectThread» (используя connectedThread.write();).
Весь код работает как шарм, я посылаю только самые важные его части, чтобы познакомить вас с моей проблемой.
Заранее благодарен!
public class MainActivity extends WearableActivity implements SensorEventListener{
BluetoothAdapter bluetoothAdapter;
String TEXT = "textToSend";
private SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onSensorChanged(SensorEvent event) {
TEXT = "..something that I want to send..";
ConnectedThread.currentThread.write(); //TOTAL nonsense, tried several things but
//cannot call write(), how should I call this from existing thread?
}
/* ___ Finding paired devices ___ */
private void pairedDevices() {
final ConnectThread connectThread = new ConnectThread(device);
}
/* ___ Connecting to a Server. ___*/
private class ConnectThread extends Thread {
private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
ConnectedThread connectedThread;
public void run() {
mmSocket.connect();
Log.d("Connected", "To Server");
connectedThread = new ConnectedThread(mmSocket);
connectedThread.start();
connectedThread.write();
}
}
/* Managing Connection */
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
public ConnectedThread(BluetoothSocket socket) {
private void write() { //How to acces this method from "public void onSensorChanged"?
if (TEXT != null) {
outputStream.println(TEXT);
Log.d(TEXT, "Written to Server");
}
}
}
Вы не можете вызывать 'private' методы вне класса, в который они заключены ...'private' означает, что доступ к нему может получить только сам класс,' protected' позволит вам получить доступ в том же пакете, на котором вы можете посмотреть. Возможно, вам захочется узнать больше о том, как область OOP работает в Java. – px06
Спасибо за быстрый ответ. Даже если я сменил все частные на публичные, произошла ошибка, которая запретила мне использовать этот метод. Может быть, я что-то упустил, я попробую еще раз проследить и следовать за вашими гидами. Благодаря! – JoeDoe
Попробуйте опубликовать stacktrace после изменения области действия, чтобы мы могли понять, в чем проблема. – px06