Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在MainActivity中从jar调用函数_Android_Jar - Fatal编程技术网

Android 在MainActivity中从jar调用函数

Android 在MainActivity中从jar调用函数,android,jar,Android,Jar,我第一次尝试创建自己的.jar文件。它是有效的,但现在我想给主要活动提供反馈。所以我想在main活动中调用函数“receiveSerial” 因此,当包含my.jar时,main活动必须始终实现函数“receiveSerial” .jar文件是代码的一部分: 主要活动 注意:我不会发布整个代码,因为代码现在很混乱,这对可读性不好 您必须强制转换,因为receiveSerialString不是Activity的方法,而是MainActivity。我将使用MainActivity应该实现的sendS

我第一次尝试创建自己的.jar文件。它是有效的,但现在我想给主要活动提供反馈。所以我想在main活动中调用函数“receiveSerial”

因此,当包含my.jar时,main活动必须始终实现函数“receiveSerial”

.jar文件是代码的一部分:

主要活动

注意:我不会发布整个代码,因为代码现在很混乱,这对可读性不好

您必须强制转换,因为receiveSerialString不是Activity的方法,而是MainActivity。我将使用MainActivity应该实现的sendSerial方法创建一个接口,并将该接口的引用保存在Blauwe类中,而不是一个Activity实例。

<1创建接口

2在MainActivity中添加接口实现

3更新Blauwe类

4在MainActivity中将inteface回调对象设置为Blauwe类


为此,您必须在jar中创建接口/提取类,然后在主活动中提取或实现它。否则,在jar中创建该类的实例,并使用实例获取方法。是的,完美的解释。工作完美!
package com.hoeks.ma.bluetooth;

import java.util.Set;

import ...

public class Blauwe{
    ..
    private Activity ma;

    public Blauwe(Activity m){
        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        ma = (Activity)m;
    }

    ..

    public void sendSerial(String s) {
        ma.receiveSerial(s);   // This line give Eclipse error "Add cast to ma" 
                               // When I add the cast it is not working
    }
import com.hoeks.ma.bluetooth.Blauwe;
....

public void receiveSerial(String s) {
    javascr.setSerial(s);
}
public interface ReceiveSerialCallback{
    public void receiveSerial(String s);
}
public class MainActivity implements ReceiveSerialCallback{

    ...
    public void receiveSerial(String s) {
        // serial received
    }
}
private ReceiveSerialCallback callback;

... 
public void setReceiveSerialCallback(ReceiveSerialCallback callback) {
     this.callback = callback;
}
...
public void sendSerial(String s) {
    callback.receiveSerial(s);
}
Blauwe b = new Blauwe();
b.setReceiveSerialCallback(this);