Расширение класса для деятельности - PullRequest
10 голосов
/ 24 ноября 2011

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

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

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

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

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

Ответы [ 2 ]

18 голосов
/ 24 ноября 2011

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

Обычно у вас будет:

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.

10 голосов
/ 24 ноября 2011

Это действительно очень просто.

MainMenuActivity

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

MainActivity

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

SubActivity

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