Логика Android-программы

Рейтинг: 1Ответов: 1Опубликовано: 13.03.2011

Здравствуйте.

Осваиваюсь в Android и Java. Хочется вынести часть логики программы из основного класса, дабы немного структурировать код. А по причине того, что необходимо наследовать интерфейсы, например, нажатия на элементе списка, а логика этого нажатия весьма длинная (для моей программы), получается не совсем "красиво", не так, как бы хотелось. Создать класс - не проблема. Проблема возникает при создании нового Intent.

class FunctionItemClick implements OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        Intent i = null;
        switch(arg2) {
        case 0:
            i = new Intent(MainActivity.this, AdditionalActivity.class);
            startActivityForResult(i, ActivityConstants.ACTIVITY_MFO);

            break;
            //... много строк кода еще
        }
    }
}

В результате чего получаем ошибку

No enclosing instance of the type MainActivity is accessible in scope.

Хотя класс MainActivity, импортирован в FunctionItemClick.java.

Как быть? Забыть об этой идее и делать все в основном классе или все же есть решение?

Ответы

▲ 3Принят

Проблема возникает из-за того, что Intent создается вне MainActivity. Чтобы заработало, нужно

  1. либо внести класс FunctionItemClick внутрь MainActivity;
  2. либо добавить ссылку в класс FunctionItemClick на экземпляр MainActivity, например, передав ее через конструктор, и использовать эту ссылку при создании Intent.