Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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中如何从库外调用Activity方法_Android_Android Activity_Call - Fatal编程技术网

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

在Android中如何从库外调用Activity方法,android,android-activity,call,Android,Android Activity,Call,在我的主要活动中,我有一个需要从辅助java类调用的方法。我使用次要java类的构造函数来接收对主活动的引用。然后,我尝试使用该引用从辅助java类的主体调用该方法。但是java不通过传递的引用识别该方法 我的主要活动如下: public class MainActivity extends Activity{ public void onCreate(){ TestClass mTestClass = new TestClass(this); } p

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

我的主要活动如下:

public class MainActivity extends Activity{

    public void onCreate(){

        TestClass mTestClass = new TestClass(this);
    }

   public testMethod(){      
       // do some work here
   }
}
现在,在我的TestClass.java中,我收到了对main活动的引用:

public class TestClass{

    public TestClass(Activity mActivity){
        //Android/Java doesn't recoginze testMethod here???? 
        mActivity.testMethod();      
    }
}
几天来,我一直试图解决这个问题,但没有成功。我迫切需要您的帮助,如果您有任何建议,我将不胜感激

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

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

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

public TestClass(Activity mActivity){
...


或者使用Julio Gorgé建议的mActivity或界面

非常感谢。它工作得很好。你花了两天时间才救了我。我没有足够的声望投你的票,但一旦我有足够的声望,我会偷偷地去投你的票。再次感谢Hanks海绵,但正如我前面所说的,我无法访问TestClass中MainActivity的名称。我将TestClass作为库类编写,其他开发人员可以在其代码中使用。因此,我不知道最终用户将调用什么类来在我的代码中使用它。界面解决方案似乎是迄今为止最好的。谢谢
public TestClass(MainActivity mActivity){
...