2011-06-11 100 views
0

在我的主要活动中,我有一个方法需要从辅助Java类调用。我使用辅助java类的构造函数来接收对主Activity的引用。然后我尝试使用这个引用来从辅助java类的主体调用该方法。但是java不能通过传入的引用识别该方法?如何在Android中从外部库调用Activity方法

主要活动是如下:

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作为库。然后用户实现在满足某些条件时将执行的方法的内容。因此,我需要通过由用户传递到我的图书馆类

回答

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();  
    } 
} 
+0

非常感谢。它效果很好。在这2天后你终于救了我。我没有足够的声望投票给你,但只要我有足够的声望,我就会偷偷摸摸地为你投票。再次感谢 – reza 2011-06-11 08:42:17

0

如果您在TestClass中的构造函数传递活动类TestMethod的不会,因为它包含在您的MainActivity类别,而不是活动可见。因此,改变

public TestClass(Activity mActivity){ 
... 

public TestClass(MainActivity mActivity){ 
... 

或投mActivity或使用像胡里奥峡谷的接口建议

+0

感谢海绵,但正如我前面所说,我没有访问我的TestClass中MainActivity的名称。我正在将TestClass作为其他开发人员可以在其代码中使用的库类编写。所以,我不知道最终用户会叫他的班级在我的代码中使用它。界面解决方案似乎是迄今为止最好的。谢谢 – reza 2011-06-11 19:27:02

相关问题