我正在创建一个 android 应用程序,我正在尝试从另一个类的线程中的运行片段访问一个方法,但是,使用我当前的实现,我在粗体行上收到空指针错误:FirstFragment.getInstance((.onReceive(incomingMessage(;
public void run(){
byte[] buffer = new byte[1024]; // buffer store for the stream
int bytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs
while (true) {
// Read from the InputStream
try {
bytes = mmInStream.read(buffer);
String incomingMessage = new String(buffer, 0, bytes);
**FirstFragment.getInstance().onReceive(incomingMessage);**
Log.d(TAG, "InputStream: " + incomingMessage);
} catch (IOException e) {
Log.e(TAG, "write: Error reading Input Stream. " + e.getMessage() );
break;
}
}
}
在 FirstFragment 类中初始化了一个静态实例变量,我正在使用 getter 函数在此类中访问它。有没有另一种方法可以正确访问此方法?谢谢。
如果你从内部调用run()
函数FirstFragment
,只需创建一个充当侦听器的接口,你的代码将如下所示:
public interface OnReceiveListener {
void onReceive(String incomingMessage);
}
public void run(OnReceiveListener listener){
byte[] buffer = new byte[1024]; // buffer store for the stream
int bytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs
while (true) {
// Read from the InputStream
try {
bytes = mmInStream.read(buffer);
String incomingMessage = new String(buffer, 0, bytes);
listener.onReceive(incomingMessage)
Log.d(TAG, "InputStream: " + incomingMessage);
} catch (IOException e) {
Log.e(TAG, "write: Error reading Input Stream. " + e.getMessage() );
break;
}
}
}
然后,当您覆盖onReceive(someString(方法并调用您希望在其中的任何函数时,您可以调用片段内的任何方法