Расширение класса для активности

Я совершенно новичок в разработке Android (Java), и я так взволнован этим! Руководство для разработчиков от Google просто фантастическое, и я многому научился за короткое время. Даже ночью не сплю ;)

Сегодня я делал меню и кое-что не могу понять. Речь идет о расширении классов. Гид говорит:

Совет. Если ваше приложение содержит несколько действий, и некоторые из них предоставляют одно и то же меню параметров, рассмотрите возможность создания действия, которое не реализует ничего, кроме методов onCreateOptionsMenu() и onOptionsItemSelected(). Затем расширьте этот класс для каждого действия, которое должно использовать одно и то же меню параметров. Таким образом, вы должны управлять только одним набором кода для обработки действий меню, и каждый класс-потомок наследует поведение меню.

Я не понимаю, как расширить класс... Скажем, у меня есть MainActivity и SubActivity. Я хочу иметь одно и то же меню в обоих действиях, поэтому я создаю MainMenuActivity. Как расширить этот класс для обоих действий?

Да, я искал в сети, но не нашел ничего полезного. Я действительно хочу понять это, поэтому я надеюсь, что кто-нибудь может помочь мне с некоторым примером кода + объяснением. Заранее спасибо!!


person MartijnG    schedule 24.11.2011    source источник
comment
Также проверьте это как раз похоже на то, о чем вы говорите.   -  person Lalit Poptani    schedule 24.11.2011


Ответы (2)


Они означают следующее:

Обычно у вас было бы:

public class MyActivity extends Activity{...}

Если у вас есть 4-5-6... таких действий, и каждое из них использует один и тот же код меню, вы можете просто скопировать и вставить код 4-5-6... раз. Или вы можете сделать это:

public class BaseActivity extends Activity{

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //My menu code  
    }
}

И используйте этот класс для своих 4-5-6... Занятия:

public class MyActivity extends BaseActivity{...}

Таким образом, вам не нужно копировать код создания меню во все ваши действия, и, кроме того, вам не нужно редактировать классы 4-5-6..., чтобы немного отредактировать создание меню. Код меню теперь тоже в MyActivity.


Вы также можете посмотреть здесь, там объясняется, что означает extends.

person nhaarman    schedule 24.11.2011
comment
Спасибо большое!! Теперь я понял, это проще, чем я думал!! - person MartijnG; 24.11.2011

Это очень просто.

Активность в главном меню

public class MainMenuActivity extends Activity {
   //Override or add whatever functionality you want other classes to inherit.
}

Основное действие

public class MainActivity extends MainMenuActivity {
   //Add what is specific to MainActivity. The menu will be inherited from MainMenuActivity.
}

Вспомогательное действие

public class SubActivity extends MainMenuActivity {
   //Add what is specific to SubActivity. The menu will be inherited from MainMenuActivity.
}
person kaspermoerch    schedule 24.11.2011