从另一个类(安卓)中运行的活动访问函数



我正在创建一个 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(方法并调用您希望在其中的任何函数时,您可以调用片段内的任何方法

最新更新