2015-11-17 3 views
0

Я хотел бы назвать метод, объявленный в Activity. Этот метод объявляется в других действиях, но он выполняет другую работу. У меня также есть простой класс java, и я бы назвал этот метод из текущей активности. Так что мне нужен способ вызвать этот метод из текущей активности, а не из определенной активности. Есть ли способ сделать это? Я уже пытался сделать это, предоставив контексту и активности текущей Деятельности классу, но я не знаю, что делать с этим. Я thougt что-то вроде этого:Вызвать метод из действий

Actitvity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Todo t = new Todo(this,this); 
} 

public void example(){ 
    //here do something 
} 

класса Java:

public class Todo { 

Context context; 
Activity activity; 

public Todo(Context context,Activity activity){ 
    this.context = context; 
    this.activity = activity; 
} 
public void eventhere(){ 
    activity.example(); 
} 
} 
+0

Для этого вам нужен интерфейс. – njzk2

+0

или создать baseActivity, используйте его как родительскую активность для каждого из ваших других действий. Объявите свой метод в базе и определите его в дочерних действиях. – AAnkit

+1

Это скорее вопрос Java, чем вопрос Android. Желательно, чтобы у вас было базовое понимание языка программирования Java, прежде чем пытаться создать приложение для Android. Просто дружеский совет. – aeskreis

ответ

0

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

Это было бы точно эквивалентно действию, просто вызывающему его собственный метод, и оставив объект Todo полностью.

Итак, возможно, если вы более подробно объясните, что именно вы пытаетесь сделать, мы можем указать вам в правильном направлении.

Однако я сделаю предположение. Похоже, вы пытаетесь реализовать Command Pattern, с вашими объектами Todo, действующими как команды. Возможно, вы хотите создать эти команды в другом месте и выполнить их позже?

Я думаю, что интересным способом сделать это было бы использование шины сообщений. Например, различные подклассы Todo могли, когда «выполнялись», поместить на шину другое сообщение «сообщение». Затем действия могут подписаться на шину и отвечать на сообщения шины, вызывая соответствующие методы.

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

Смежные вопросы