如何在Android中从外部库调用Activity方法

时间:2011-06-11 07:12:39

标签: android android-activity call

在我的主要活动中,我有一个需要从辅助java类调用的方法。我使用了辅助java类的构造函数来接收对主Activity的引用。然后我尝试使用此引用从辅助java类的主体调用该方法。但java不通过传递引用识别该方法吗?

我的主要活动如下:

public class MainActivity extends Activity{

    public void onCreate(){

        TestClass mTestClass = new TestClass(this);
    }

   public testMethod(){      
       // do some work here
   }
}

现在,在我的 TestClass.java 中,我收到了对MainActivity的引用:

public class TestClass{

    public TestClass(Activity mActivity){
        //Android/Java doesn't recoginze testMethod here???? 
        mActivity.testMethod();      
    }
}

我一直试图解决这个问题几天没有成功。我迫切需要你的帮助,并希望得到任何建议!

P.S。 TestClass将充当一个库,每个人都可以从他们的Android应用程序中调用它。换句话说,我提供TestClass作为库。然后,用户实现在满足某些条件时将执行的方法的内容。因此,我需要通过用户传递给我的库类的引用来调用该特定方法(将由用户在自己的Activity中定义)

2 个答案:

答案 0 :(得分:7)

在您的申请中:

public class MainActivity extends Activity implements Testeable {

    public void onCreate(){

        TestClass mTestClass = new TestClass(this);
    }

   public testMethod(){      
       // do some work here
   }
}

在你的图书馆:

public interface Testeable {
   public void testMethod();
}


public class TestClass{

    public TestClass(Testeable mActivity){
        //Android/Java doesn't recoginze testMethod here???? 
        mActivity.testMethod();      
    }
}

答案 1 :(得分:0)

如果在TestClass的构造函数中传递Activity类,则testMethod将不可见,因为它包含在MainActivity类中,而不包含在Activity中。所以改变

public TestClass(Activity mActivity){
...

public TestClass(MainActivity mActivity){
...

或投射动力学或使用像JulioGorgé建议的界面