Вызов методов из других классов в Android - PullRequest
0 голосов
/ 25 февраля 2011

Я пытаюсь вызвать метод из другого класса, но получаю ошибку исключения.

У меня есть два класса, и класс 1 является основным классом

В классе 1 есть метод onclick, который вызывает метод из другого класса onclick.

У меня есть текстовые поля и текстовые правки, объявленные в классе 1.

В классе 2 есть функциональные возможности для них и используются операторы if.

Я расширяю класс 1 от класса 2, чтобы класс 2 использовал переменные.

Как я могу вызывать методы из других классов в Android.

В данный момент я просто вызываю метод из класса 2 в классе 1, используя:

class1.method(); 

, но, похоже, это не работает.Ценю любые советы, спасибо.

Редактировать:

Я теперь создал в классе 1 переменную:

static class2 object;

из этого я вызываю onclick:

object.class2method();

Я получаю сообщение об ошибке nullPointerexception, спасибо.

Ответы [ 3 ]

3 голосов
/ 25 февраля 2011

Если я правильно понял ваш вопрос, если вы хотите вызывать методы в расширенном классе, вам нужно убедиться, что эти методы либо публичные, либо защищенные.

Также опустите имя класса, например, простоЗвоните method(), а не class.method()

Просто подробнее об этом, вот код, который я только что приготовил:

class class1 {
    private void privateMethod() {
        // do nothing
    }
    protected void protectedMethod() {
        // do nothing
    }
    public void publicMethod() {
        // do nothing
    }
}
class class2 extends class1 {
    private void testMethod() {
        privateMethod();    // error - not visible
        protectedMethod();    // works
        publicMethod(); // also works
    }
}
2 голосов
/ 23 февраля 2012

РЕДАКТИРОВАНИЕ (потому что Кевин удалил предыдущий ответ) :

Android немного специфичен в этой ситуации.

Если один из ваших классов является Activity, а другой - классом-помощником, ситуация предполагает, что вам нужно создать экземпляр класса-помощника в классе Activity. Что-то вроде

private Helper helper = new Helper(this);

и затем вы можете вызывать методы вспомогательного класса в любом месте вашей Activity, используя:

helper.nameOfMethod(requiredParameters);

Может случиться, что ваш ClassA - это Activity (поэтому он расширяет класс Android-активности), а ClassB - это Activity, но расширяет ActivityA. В этой ситуации вы сможете использовать методы ActivityA из ActivityB, просто вызывая его по имени метода (без явного указания, где хранится ваш метод).

methodFromActivityB(parameters);

Надеюсь, теперь это немного легче понять.

1 голос
/ 24 января 2013

Я знаю, что это немного поздно, но потратив 2 полных дня, чтобы найти решение, оно определенно работает для меня, что может быть полезно для других:

  1. Определите требуемую функцию в первом классе (MainActivity, которая расширяет Activity) в качестве статического:

    public static int getScreenH(){
        Integer H = Sheight;
        return H;
    }
    
  2. Затем в другом классе (класс ResizeTextView расширяет TextView) вызвать функцию:

    Integer hh = MainActivity.getScreenH();
    

Вот и все !! Проблема заключалась в том, что вызывающий класс был расширением TextView, поэтому ни один из методов, доступных в Activity, не мог быть использован!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...