Урок 77. Tab - вкладки. TabActivity. Activity, как содержимое вкладки

Обсуждение уроков
igrok-vip
Сообщения: 56
Зарегистрирован: 29 апр 2013, 11:53

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение igrok-vip » 05 май 2013, 13:37

Как можно вызвать функцию из другой Activity?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение rezak90 » 05 май 2013, 14:32

igrok-vip писал(а):Как можно вызвать функцию из другой Activity?
1) скопировать метод в другую активити;
2) сделать метод статическим;
3) иметь ссылку на первую активити что бы вызвать её метод с другого места;
P.S. вот три варианта и все они плохи как и сам вопрос, так как если возникает такой вопрос то означает что архитектура приложения хромает.
R.id.team
Политика на форуме запрещена

igrok-vip
Сообщения: 56
Зарегистрирован: 29 апр 2013, 11:53

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение igrok-vip » 05 май 2013, 14:50

У меня в MainActivity метод:

public void setTab (String tag){
TabHost tabHost = getTabHost();
tabHost.setCurrentTabByTag(tag);
}

Если его скопировать в ActivityOne, то ActivityOne опять же не знает что такое getTabHost.
Если его сделать static, то MainActivity ругается на getTabHost(что-то типо нельзя применить к не статичному методу)

Про ссылку нашёл вот это:

Код: Выделить всё

public void onClick (View v) {
	
	Class <?> cls = null;
        try {
            cls = Class.forName("MainActivity.class");
        } catch (ClassNotFoundException e) {
            Log.e("ERROR-SET-CLASS", "класс не найден");
        }
        
        Method m = cls.getMethod("setTab", void.class);
        m.invoke(, "tag2");
	}
Скажите правильно ли делаю, и что за первый параметр object в invoke?

На счёт архитектуры приложения вы скорее всего правы, это первое моё приложение)

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение xr0m » 05 май 2013, 15:03

уже не удаляется
Последний раз редактировалось xr0m 05 май 2013, 15:06, всего редактировалось 1 раз.

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение xr0m » 05 май 2013, 15:05

Два активити, это, можно сказать, два разных окна. Данные между ними можно передавать, например, через Preferences.
Ты хочешь впихнуть активити, как параметр для другой аткивити? А заачем?

Если тебе не важен первый параметр, используй null

igrok-vip
Сообщения: 56
Зарегистрирован: 29 апр 2013, 11:53

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение igrok-vip » 05 май 2013, 15:07

не даёт использовать Null, сразу пишет, что ошибка

igrok-vip
Сообщения: 56
Зарегистрирован: 29 апр 2013, 11:53

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение igrok-vip » 05 май 2013, 15:08

xr0m писал(а): Ты хочешь впихнуть активити, как параметр для другой аткивити? А заачем?
Да нет, просто хочу переходить по вкладкам при нажатии кнопок Далее и Назад

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение rezak90 » 05 май 2013, 15:11

Ничего не выйдет так как первая активити будет в состоянии pause когда вторая активити будет активная то ui элементы будут null и обратится к ним нельзя будет (в том числе и к TabHost). Так что повторюсь - нужно менять логику, если не знаете как то ставьте конкретную задачу и здесь её решим.
R.id.team
Политика на форуме запрещена

igrok-vip
Сообщения: 56
Зарегистрирован: 29 апр 2013, 11:53

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение igrok-vip » 05 май 2013, 15:19

Теперь всё ясно. Ну в общем задача это по нажатии кнопок Далее и Назад переходить на другую вкладку. По сути понял, что можно сами кнопки расположить снизу на Main_activity.xml и тогда всё будет работать. Но в будущем хотел кнопки заменить свайпами влево/вправо, а вот это уже тогда не получится сделать? (Знаю что есть такой тип навигации, но он от API 11, а я делаю от 7)

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение xr0m » 05 май 2013, 15:22

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

igrok-vip
Сообщения: 56
Зарегистрирован: 29 апр 2013, 11:53

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение igrok-vip » 05 май 2013, 15:26

А разве при этом вкладки будут меняться? Мне нужно ещё и вкладки оставить, чтобы можно было на нужную перейти в любой момент

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение rezak90 » 05 май 2013, 15:30

igrok-vip писал(а):Теперь всё ясно. Ну в общем задача это по нажатии кнопок Далее и Назад переходить на другую вкладку. По сути понял, что можно сами кнопки расположить снизу на Main_activity.xml и тогда всё будет работать. Но в будущем хотел кнопки заменить свайпами влево/вправо, а вот это уже тогда не получится сделать? (Знаю что есть такой тип навигации, но он от API 11, а я делаю от 7)
это ViewPager, и доступен он с 1,6 (если не ошибаюсь на счёт поддержки версии саппорт либы).
R.id.team
Политика на форуме запрещена

igrok-vip
Сообщения: 56
Зарегистрирован: 29 апр 2013, 11:53

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение igrok-vip » 05 май 2013, 15:40

О, спасибо большое. То что нужно, сори что мозги пудрил) Далеко не все возможности андроида ещё знаю)

ammaximus
Сообщения: 2
Зарегистрирован: 02 июн 2013, 13:26

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение ammaximus » 06 июн 2013, 13:58

Здравствуйте.
Активно изучаю вкладки и пытаюсь на базе урока сделать так, чтобы вкладки были слева в столбик, перерыл много материалов, которые советуют, но повторить не могу(((. Вот лучшее из того, что получилось:

[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TabWidget>

<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="100dp"
android:layout_height="wrap_content" >
</FrameLayout>
</LinearLayout>
</TabHost>

</LinearLayout>

[/syntax]

[syntax=java]public class MainActivity extends TabActivity {
final String TABS_TAG_1 = "Tag 1";
final String TABS_TAG_2 = "Tag 2";

/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// getTabWidget().setOrientation(LinearLayout.VERTICAL);

TabHost tabHost = getTabHost();
TabHost.TabSpec tabSpec;

tabSpec = tabHost.newTabSpec(TABS_TAG_1);
tabSpec.setContent(TabFactory);
tabSpec.setIndicator("Вкладка 1");
tabHost.addTab(tabSpec);

tabSpec = tabHost.newTabSpec(TABS_TAG_2);
tabSpec.setContent(TabFactory);
tabSpec.setIndicator("Вкладка 2");
tabHost.addTab(tabSpec);


}

TabHost.TabContentFactory TabFactory = new TabHost.TabContentFactory() {
@Override
public View createTabContent(String tag) {
if (tag == TABS_TAG_1) {
return getLayoutInflater().inflate(R.layout.tab, null);
} else if (tag == TABS_TAG_2) {
TextView tv = new TextView(MainActivity.this);
tv.setText("Это создано вручную");
return tv;
}
return null;
}
};
}[/syntax]
Вложения
bestResult.JPG
bestResult.JPG (33.21 КБ) 13445 просмотров

Romillionaire
Сообщения: 7
Зарегистрирован: 28 июн 2013, 11:26

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение Romillionaire » 28 июн 2013, 11:42

Подскажите пожалуйста, как привязать базу данных и активити.
Мне нужно реализовать два табы.
На первом вывести список пользователей.
На втором форма с добавлением пользователя.
По примеру этого урока я разделил вкладки на отдельные активити.
Как расшарить базу между несколькими активити?
Где описывать класс DBHelper и где его вызывать?
Заранее спасибо!!!
Было бы неплохо вынести мой вопрос в отдельный урок)))

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение Foenix » 28 июн 2013, 12:26

Вообще-то все твои вопросы уже есть в уроках.
Класс в этом уроке, кстати, немного устарел.
И третье, обычно добавление чего-бы-то-нибыло в список осуществляется не в табах..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Romillionaire
Сообщения: 7
Зарегистрирован: 28 июн 2013, 11:26

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение Romillionaire » 28 июн 2013, 12:44

Извините в каком уроке вы рассказываете о то как между несколькими активити юзать базу?
Я так понимаю что в каждом активити мне нужно создавать объект для работы с базой и при переходе с одной активити на второй этот объект удалят и заново создавать?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение rezak90 » 28 июн 2013, 13:16

Romillionaire писал(а):Извините в каком уроке вы рассказываете о то как между несколькими активити юзать базу?
Я так понимаю что в каждом активити мне нужно создавать объект для работы с базой и при переходе с одной активити на второй этот объект удалят и заново создавать?
сделайте DBHelper синглтоном и юзайте где хотите
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение Foenix » 28 июн 2013, 13:50

Romillionaire писал(а):Извините в каком уроке вы рассказываете о то как между несколькими активити юзать базу?
Я так понимаю что в каждом активити мне нужно создавать объект для работы с базой и при переходе с одной активити на второй этот объект удалят и заново создавать?
попробуй для начала повторить урок с созданием быза данных вообще и 1 активити. По сути нет такого понятия "расшарить базу данных для двух активити".
Объект вы тоже вряд ли "удалите".
В вашей постановке задачи много противоречий. Надо с чего-нибудь начать.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер

Сообщение rezak90 » 28 июн 2013, 15:01

По сути нет такого понятия "расшарить базу данных для двух активити".
если копнуть глубже то такое понятие можно сказать существует если между подписчиками и бд будет ресивер или контентпровайдер
R.id.team
Политика на форуме запрещена

Ответить