Java 获取非活动类(Android)的onActivityResult
我确信关于这一点有很多类似的问题,但非只是回答了我的用例 我有一个BluetoothReader类,它不扩展任何超类。此调用检查设备上是否启用了蓝牙,如果未启用蓝牙,则提示对话框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
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
)。