Как складывать общие методы для разных действий

Я использую новые действия для ActivityButtons. Итак, у меня есть около 10 различных действий, и все они используют один и тот же нижний колонтитул. В нижнем колонтитуле есть кнопки и множество кликов. Я просто скопировал все события прослушивателя для кнопок нижнего колонтитула в несколько других действий, чтобы проверить это. Это работает, но мне нужно найти способ хранить их все вместе где-то, чтобы я мог изменить только один раз, когда мне нужно.

Я попытался сохранить все распространенные методы в отдельном служебном классе, сделав их статическими, однако это имеет ограниченное применение. У меня проблемы со ссылками и нестатическими методами.

В своем исследовании я прочитал о ViewFlipper. Было бы лучше, если бы я использовал одну MainActivity для всего и ViewFlipper для переключения между макетами. Я читал, что это может вызвать некоторые проблемы с ресурсами, так как одно-единственное действие будет активным все время.

Есть ли у вас какие-либо предложения по этой проблеме?

Заранее спасибо.


person wervdon    schedule 21.01.2013    source источник


Ответы (2)


Есть несколько вещей, которые следует учитывать.

Во-первых, нижние колонтитулы — это довольно проблематичный шаблон дизайна для Android. Из-за устройств с программными кнопками прямо под областью экрана пользователям очень легко случайно нажать системные кнопки, когда они нацелены на нижний колонтитул, и наоборот. Если вы решительно настроены на использование нижнего колонтитула, я предлагаю вам оставить достаточно места между ним и нижним краем экрана, чтобы смягчить это.

У вас есть несколько вариантов того, как обрабатывать макет и прослушиватели кликов. Вы можете сделать нижний колонтитул отдельным фрагментом и просто добавить его в каждое действие, которое нуждается в этом. Это, возможно, более сложный подход, но он обеспечит хороший опыт работы с фрагментами, если вы готовы принять вызов.

Другой вариант заключается в том, чтобы все ваши слушатели кликов нижнего колонтитула были внутри их собственной активности, а затем расширили это со всеми другими вашими действиями. Что-то вроде этого:

public class FooterActivity extends Activity{
    Button btn1
    //...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.id.yourLayout);
        btn1 = (Button)findViewById(R.id.btn1);
        btn1.setOnClickListener(yourClickListener);
        //...
    }
}

Затем в своей обычной деятельности измените extends Activity на extends FooterActivity.

person FoamyGuy    schedule 21.01.2013

Вы можете создать ParentActivity, который будет обрабатывать onClick метод, а затем позволить вашим другим Activities и extend этим ParentActivity делать то, что специфично для них.

Другим подходом было бы использование Fragments. Создайте один фрагмент, который будет обрабатывать Footer, а другой будет отличаться в зависимости от ожидаемой работы.

person Tomislav Novoselec    schedule 21.01.2013
comment
Я проверю их обоих и отчитаюсь - person wervdon; 21.01.2013