问题描述
我想问一下Android部分出现问题的问题
public class FlutterPluginMint2Plugin implements FlutterPlugin,MethodCallHandler,ActivityAware,OnServiceBindListener {
........
/**
* Plugin registration.
*/
public static void registerWith(Registrar registrar) {
FlutterPluginMint2Plugin instance = new FlutterPluginMint2Plugin();
Activity activity = registrar.activity();
Application application = null;
if (registrar.context() != null) {
application = (Application) (registrar.context().getApplicationContext());
}
instance.setup(registrar.messenger(),application,activity,registrar,null);
}
private void setup(final BinaryMessenger messenger,final Application application,final Activity activity,final PluginRegistry.Registrar registrar,final ActivityPluginBinding activityBinding) {
synchronized (initializationLock) {
this.activity = activity;
this.application = application;
this.context = application;
mChannel = new MethodChannel(messenger,CHANNEL + "/methods");
mChannel.setMethodCallHandler(this);
eChannel = new EventChannel(messenger,CHANNEL + "/events");
eChannel.setStreamHandler(stateHandler);
**MonitorDataTransmissionManager.getInstance().bind(DeviceType.HealthMonitor,this);**
}
}
.......
}
但是我需要的绑定具有无法在AAR库中的 MonitorDataTransmissionManager 类中更改的功能
public void bind(@NonNull DeviceType deviceType,@NonNull MonitorDataTransmissionManager.OnServiceBindListener listener) {
if (listener instanceof Activity) {
this.mDeviceType = deviceType;
this.mBindListener = listener;
this.mActivity = (Activity)this.mBindListener;
Intent serviceIntent = new Intent(this.mActivity,OnBLEService.class);
this.mActivity.bindService(serviceIntent,this,1);
} else {
throw new ClassCastException("MonitorDataTransmissionManager need bind in a ACTIVITY.");
}
}
在我的示例中是 main.dart
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FlutterPluginMint2Plugin.registerWith(this.registrarFor("com.mandayahealth.Flutter_plugin_mint2.FlutterPluginMint2Plugin"));
}
}
我可以在班级获得活动,但主要问题是 this ,它在我的 FlutterPluginMint2Plugin 类内部调用,是否仍然可以替换 this的调用?这样在 MonitorDataTransmissionManager 类中可以运行吗?
我尝试将Listener强制转换为活动,但没有希望,也无法将其强制转换为活动
这是我的错误示例:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mandayahealth.Flutter_plugin_mint2_example,PID: 2615
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mandayahealth.Flutter_plugin_mint2_example/com.mandayahealth.Flutter_plugin_mint2_example.MainActivity}: java.lang.classCastException: MonitorDataTransmissionManager need bind in a ACTIVITY.
at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2489)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2551)
at android.app.ActivityThread.access$1000(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1432)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5572)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
Caused by: java.lang.classCastException: MonitorDataTransmissionManager need bind in a ACTIVITY.
at com.linktop.MonitorDataTransmissionManager.bind(MonitorDataTransmissionManager.java:120)
at com.mandayahealth.Flutter_plugin_mint2.FlutterPluginMint2Plugin.setup(FlutterPluginMint2Plugin.java:177)
at com.mandayahealth.Flutter_plugin_mint2.FlutterPluginMint2Plugin.registerWith(FlutterPluginMint2Plugin.java:143)
at com.mandayahealth.Flutter_plugin_mint2_example.MainActivity.onCreate(MainActivity.java:17)
at android.app.Activity.performCreate(Activity.java:6033)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2442)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2551)
at android.app.ActivityThread.access$1000(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1432)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5572)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
所以我的问题是在没有 this 的情况下如何调用 MonitorDataTransmissionManager bind 函数?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)