Java 获取非活动类(Android)的onActivityResult

Java 获取非活动类(Android)的onActivityResult,java,android,android-activity,Java,Android,Android Activity,我确信关于这一点有很多类似的问题,但非只是回答了我的用例 我有一个BluetoothReader类,它不扩展任何超类。此调用检查设备上是否启用了蓝牙,如果未启用蓝牙,则提示对话框 public class BluetoothReader { private Activity activity; public BluetoothReader(Activity activity){ bluetoothAdapter = BluetoothAdapter.getDefault

我确信关于这一点有很多类似的问题,但非只是回答了我的用例

我有一个BluetoothReader类,它不扩展任何超类。此调用检查设备上是否启用了蓝牙,如果未启用蓝牙,则提示对话框

public class BluetoothReader {

   private Activity activity;

   public BluetoothReader(Activity activity){
     bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
     this.activity = activity;
   }
}
我使用下面的代码打开蓝牙

intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
activity.startActivityForResult(intent, REQUEST_ENABLE_BLUETOOTH);
所有这些都有效,但现在我的难题是,我如何在同一个班级中得到这个检查的结果

如果我要扩展Activity超类,我就必须重写onActivityResult

我试过:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // Doesn't work
}

有什么想法吗?

如果您需要活动或片段之外的结果,您的活动类将需要重写onActivityResult,然后通过方法调用将该结果传递给其他类。

BluetoothReader
类中:

public void onActivityResult(int requestCode, int resultCode, Intent result) {
    //some code
}
在main中,重定向到此函数:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent result) {
    super.onActivityResult(requestCode, resultCode, result);
    BluetoothReader.onActivityResult(requestCode, resultCode, result);
 }

活动结果API,与生命周期一起使用。
这真是个好主意。

我认为您应该使用“implements”Java关键字,您到底在哪里调用startActivityForResult??在BluetoothReader类中?onActivityResult将在用于调用此startActivityForResult的活动中实现。yes@MohammedAtif如果我想在那里得到结果,正如大多数答案所建议的,您应该在为BlueToThreader创建对象的活动和回调中重写onActivityResult,
bluetoothReaderObject.OnActivityResult()这将不起作用。您建议的
BluetoothReader
onActivityResult()
方法是一个实例方法;您调用它就像调用一个静态方法一样。@Commonware您是正确的,您认为它应该是
BluetoothReaderInstance
OnActivityResult()
?对于
活动上的字段,这将是奇怪的大写形式。活动可以在
BluetoothReader
实例上调用方法的唯一好方法是,如果
activity
具有引用该实例的字段(例如,
btReader
)。