在MainActivity中调用jar中的函数

时间:2014-08-22 09:59:04

标签: android jar

我第一次尝试制作自己的.jar文件。它有效,但现在我想向MainActivity提供反馈。所以我想调用一个函数" receiveSerial()'在MainActivity中。

因此,MainActivity必须始终实现函数' receiveSerial()'当包括我的.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
    }

MainActivity

import com.hoeks.ma.bluetooth.Blauwe;
....

public void receiveSerial(String s) {
    javascr.setSerial(s);
}

注意:我没有发布整个代码,因为代码现在很乱,它对可读性不利。

2 个答案:

答案 0 :(得分:0)

您必须投票,因为receiveSerial(String)不是Activity的方法,而是MainActivity。我将创建一个interface(使用方法sendSerial)MainActivity应该实现,并在Blauwe类中保存此接口的引用,而不是Activity实例。

答案 1 :(得分:0)

1)创建interface

public interface ReceiveSerialCallback{
    public void receiveSerial(String s);
}

2)在interface

中添加MainActivity实施
public class MainActivity implements ReceiveSerialCallback{

    ...
    public void receiveSerial(String s) {
        // serial received
    }
}

3)更新Blauwe课程

private ReceiveSerialCallback callback;

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

4)将inteface回调对象设置为Blauwe

中的MainActivity
Blauwe b = new Blauwe();
b.setReceiveSerialCallback(this);