Повторное использование просмотров нескольких активностей в Android - PullRequest
0 голосов
/ 26 марта 2012

У меня есть следующий сценарий: Android вверх, совместимый, начиная с Android 1.6 и выше. В нижней части ВСЕХ действий у меня есть набор кнопок-переключателей, которые только запускают действия. Не спрашивайте меня, почему, это был запрос :) Когда эти кнопки делали одно и то же на всех экранах, я думал так:

  1. Поместите макет в XML-файл, и это во всех моих макетах деятельности
  2. Создайте класс, расширяющий Activity, и назначьте методы onClick для всех моих кнопок
  3. Когда отмечена кнопка ToggleButton, установите все остальные кнопки флажок = "ложь" и выполните действие кнопки.

Я застрял на BaseActivity при переопределении onCreate (). Как мне взять мои кнопки и назначить им слушателей onClick?

public class BaseActivity extends Activity {
    private ToggleButton menuHome;

    @Override
    public void onCreate(Bundle savedInstanceState) {
             //this does not work as it cannot find R.id.menu_home)
        menuHome = (ToggleButton) findViewById(R.id.menu_home);
    }
}

Ответы [ 3 ]

1 голос
/ 26 марта 2012

В других ваших действиях, которые расширяют BaseActivity, взгляните на ваш метод OnCreate. Это выглядит так?

public class YourActivity extends BaseActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        base.Oncreate(saveInstanceState);     

        setContentView(R.layout.YourLayout);

        // Other code here...
    }
}

Это связано с порядком ... вы не настроили представление контента, поэтому ваша кнопка переключения не существует. Попробуйте это:

public class YourActivity extends BaseActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.YourLayout); // Set your content view first.

        base.Oncreate(saveInstanceState);     



        // Other code here...
    }
}
1 голос
/ 26 марта 2012

Вам необходимо инициализировать графический интерфейс с помощью действительного файла XML или с помощью инициализации объекта времени выполнения. Попробуйте использовать setContentView в своей деятельности. Ваш код не загружает какой-либо xml, поэтому меню menu_home не инициализировано.

http://developer.android.com/reference/android/app/Activity.html

Я не уверен, что это правильный подход, я бы подумал о создании внешнего компонента для выполнения этой работы: http://developer.android.com/guide/topics/ui/custom-components.html

0 голосов
/ 26 марта 2012

Вы должны вызвать setContentView (R.layout.your_layout), где your_layout - это макет, содержащий кнопку R.id.menu_home. В настоящее время вы не предоставили макет для действия, поэтому нет иерархии, в которой можно искать кнопку.

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