在我的主要活动中,我有一个需要从辅助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中定义)
答案 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é建议的界面