Несколько расширений и реализаций открытого класса

Итак ... Я использую этот общедоступный класс прямо сейчас, и он отлично работает (MainActivity.java) для моих вкладок в моем приложении. Но я хочу что-то сделать с вкладками, и мне нужно использовать кнопки, textView и другие вещи. Но я не могу, потому что мне нужно использовать два удлинителя и два инструмента, чтобы они оба работали.

public class MainActivity extends ActionBarActivity implements TabListener 

Как это должно выглядеть / работать, как должно выглядеть и работать

public class MainActivity extends ActionBarActivity, Activity implements TabListener, OnClickListener

Любое исправление или знание того, как это исправить? (Я использую Android Eclipse)


person Gold Toazt    schedule 05.05.2014    source источник
comment
Вы не можете напрямую расширять несколько классов. Вы можете сделать A extends B и B extends C, если нужно. Однако реализация нескольких интерфейсов не должна вызывать проблем.   -  person AntonH    schedule 06.05.2014
comment
Вы можете сделать A, расширяет B, а B расширяет. Могли бы вы сделать это с моим примером. Я действительно не понимаю, как и что вы имеете в виду? Также он работает с орудиями?   -  person Gold Toazt    schedule 06.05.2014
comment
public class MATemp extends Actionbar {...}, затем public class MainActivity extends MATemp implements TabListener, OnClickListener {...}. Если вы хотите убедиться, что MATemp не будет создан, сделайте его абстрактным с помощью public abstract class MATemp .... Это базовая Java, поэтому вам, вероятно, следует изучить наследование из книги или учебника, прежде чем идти дальше.   -  person AntonH    schedule 06.05.2014
comment
Все, что я делал, это смотрел обучающие программы ^ - ^ Начал писать код 5-6 дней назад: p Думаю, я понял, так что вы говорите: public abstract class MATemp extends ActionbarActivity public class MainActivity extends MATemp implements TabListener, OnClickListener   -  person Gold Toazt    schedule 06.05.2014
comment
Да, за исключением того, что вы не можете сделать это за один раз. Вы должны делать это отдельно, поэтому я помещаю их отдельно в своих примерах.   -  person AntonH    schedule 06.05.2014
comment
public abstract class MATemp extends ActionbarActivity public class MainActivity extends MATemp implements TabListener, OnClickListener Верно?   -  person Gold Toazt    schedule 06.05.2014
comment
Пока MATemp и MainActivity являются двумя отдельными классами, выглядит хорошо.   -  person AntonH    schedule 06.05.2014
comment
Нет, не могу заставить его работать: /   -  person Gold Toazt    schedule 06.05.2014
comment
Вы создали 2 разных класса, расширяя соответствующие классы? Если да, откройте другой вопрос, опубликуйте свой код и сообщение об ошибке / причину, по которой он не работает.   -  person AntonH    schedule 07.05.2014


Ответы (2)


См. http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html раздел «Абстрактные классы по сравнению с интерфейсами».

Если вы хотите определить поведение, которое могут реализовать несколько классов, наиболее распространенным подходом является использование интерфейса.

person jordan    schedule 05.05.2014

Ваш MainActivity является разновидностью Activity, но действие не является ActionBar. Он может иметь ActionBar или использовать его, но это не ActionBar. Следовательно, попытка заставить класс MainActivity расширить ActionBar - неправильная концепция.

Я не уверен, что вы хотите сделать (лично я не пробовал использовать класс ActionBar напрямую). Если вы просто хотите, чтобы ваша активность выполнялась с панелью действий, просто объявите переменную типа ActionBar:

ActionBar actionBar;

и назначьте его getActionBar() или getSupportActionBar(), когда вам это нужно. Если вы действительно хотите добавить функциональность к ActionBar, предоставляемому Android, возможно, вы могли бы определить класс, расширяющий ActionBar, но я не знаю, как вы скажете Android использовать ваш новый класс для панель действий, которую он настраивает. См. это руководство.

ИЗМЕНИТЬ: После того, как я опубликовал этот ответ, вопрос был отредактирован, и теперь ваш класс расширяется ActionBarActivity:

public class MainActivity extends ActionBarActivity, Activity implements TabListener, OnClickListener

Это другое. Однако ActionBarActivity уже расширяет Activity, поэтому вам не нужно указывать Activity в приведенном выше определении класса. Он автоматически расширится на Activity.

person ajb    schedule 05.05.2014
comment
Я думаю, вы неправильно поняли вопрос, у меня есть все те вещи, о которых вы упоминаете в моих вкладках. Проблема в том, что мне также нужно расширять Activity и реализовывать Tablistener. Для кнопки сохранения - person Gold Toazt; 06.05.2014
comment
@GoldToazt Похоже, вы изменили вопрос после того, как я на него ответил. - person ajb; 06.05.2014