Как вызвать метод Activity из сторонней библиотеки в Android - PullRequest
0 голосов
/ 11 июня 2011

В моей основной деятельности у меня есть метод, который мне нужно вызвать из вторичного 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 ]

7 голосов
/ 11 июня 2011

В вашем приложении:

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 голосов
/ 11 июня 2011

Если вы передадите класс Activity в конструкторе TestClass, testMethod не будет виден, поскольку он содержится в вашем классе MainActivity, а не в Activity.Поэтому измените

public TestClass(Activity mActivity){
...

на

public TestClass(MainActivity mActivity){
...

или приведите mActivity или используйте интерфейс, подобный предложенному Хулио Горге

...