Урок 104. Android 3. Fragments. Lifecycle
Re: Урок 104. Android 3. Fragments. Lifecycle
C mCallbacks = this пересмотр импортов помог сяпочки)))
Re: Урок 104. Android 3. Fragments. Lifecycle
Привет всем! Можно теоретический вопрос?
Везде пишется о взаимодействующих друг с другом фрагментах.
А могут ли быть независимые друг от друга, работающие
по отдельности, но на одном экране?
Везде пишется о взаимодействующих друг с другом фрагментах.
А могут ли быть независимые друг от друга, работающие
по отдельности, но на одном экране?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 104. Android 3. Fragments. Lifecycle
Везде пишут о их взаимодействии именно так, чтобы они друг о друге ничего не знали, т.е. они могут работать на одном экране, но общаться через другой компонент, например через Activity.
Re: Урок 104. Android 3. Fragments. Lifecycle
Взаимодействовать напрямую должны только зависимые фрагменты, например, когда фрагмент вызывает диалог-фрагмент.avex писал(а):Привет всем! Можно теоретический вопрос?
Везде пишется о взаимодействующих друг с другом фрагментах.
А могут ли быть независимые друг от друга, работающие
по отдельности, но на одном экране?
В остальных случаях равноправные фрагменты не зависимы, не знают о том сколько еще таких же фрагментов и существуют ли они.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 104. Android 3. Fragments. Lifecycle
Спасибо за ответы. Можно вопрос ближе к практике?
У меня есть простенькое приложение (всего два файлика – Main.java, SomeView (тут дан основной рабочий код) и макет main.xml), которое хочу заставить работать во фрагменте с тем, чтобы добавить еще один фрагмент – с кнопками и т.д. – SecondFragment. Так, чтобы они друг о друге ничего не знали.
Вот код Main.java:
Как бы вы посоветовали переделать это приложение? Понятно, что есть способ - в main.xml дать два фрагмента, куда поместить классы – SomeView и SecondFragment. Но он у меня стабильно не запускается, видимо, что-то делаю не то. Поэтому хочу спросить, есть ли способ (чтобы наверняка) совместить на одном экране два этих фрагмента?
У меня есть простенькое приложение (всего два файлика – Main.java, SomeView (тут дан основной рабочий код) и макет main.xml), которое хочу заставить работать во фрагменте с тем, чтобы добавить еще один фрагмент – с кнопками и т.д. – SecondFragment. Так, чтобы они друг о друге ничего не знали.
Вот код Main.java:
Код: Выделить всё
public class Main extends Activity {
private SomeView view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RelativeLayout layout =
(RelativeLayout) findViewById(R.id.relativeLayout);
view = new SomeView(this, getPreferences(Context.MODE_PRIVATE),
layout);
layout.addView(view, 0);
}
@Override
public void onPause() {
super.onPause();
view.pause();
}
@Override
public void onResume() {
super.onResume();
view.resume(this);
}
}
Re: Урок 104. Android 3. Fragments. Lifecycle
данная тема раскрыта в уроках.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 104. Android 3. Fragments. Lifecycle
>>данная тема раскрыта в уроках.
Не могу найти, подскажите, пожалуйста, в каких именно.
В моей ситуации не новое приложение, а с переделка существующего,
только поэтому возникли затруднения.
Не могу найти, подскажите, пожалуйста, в каких именно.
В моей ситуации не новое приложение, а с переделка существующего,
только поэтому возникли затруднения.
Re: Урок 104. Android 3. Fragments. Lifecycle
в тех, где есть в названии Fragments
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 104. Android 3. Fragments. Lifecycle
Ясно...
Если бы там были ответы, наверное, не спрашивал бы...
Давайте предоставим и другим желающим возможность помочь советом по моему вопросу, хорошо?
Тем более, вопрос по теме.
Наверняка, владеющие ею с легкостью направят в нужном направлении.
Если бы там были ответы, наверное, не спрашивал бы...
Давайте предоставим и другим желающим возможность помочь советом по моему вопросу, хорошо?
Тем более, вопрос по теме.
Наверняка, владеющие ею с легкостью направят в нужном направлении.
Re: Урок 104. Android 3. Fragments. Lifecycle
я щас не хочу даже копаться, но вы видимо невнимательно их читали. Я же по ним еще училась и читала, что автор учит как раз такому подходу - независимых фрагментов.
вот прям так
вот прям так
Может я не поняла и вам что-то другое надо.Так, чтобы они друг о друге ничего не знали.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 104. Android 3. Fragments. Lifecycle
Открыл уроки
http://startandroid.ru/ru/uroki/vse-uroki-spiskom.html
Далее:
далее:
я чуть раньше писал
И там (я специально пересмотрел урок) показано это взаимодействие. Даже строка в конце урока говорит нам
Кто ищет, тот всегда найдет.
http://startandroid.ru/ru/uroki/vse-uroki-spiskom.html
Далее:
Нажал Ctrl+F, ввел "fragments" нашел 104, 105, 106, 109, 110, 11 урокв тех, где есть в названии Fragments
далее:
я чуть раньше писал
Ага, значит это "Урок 106. Android 3. Fragments. Взаимодействие с Activity"Везде пишут о их взаимодействии именно так, чтобы они друг о друге ничего не знали, т.е. они могут работать на одном экране, но общаться через другой компонент, например через Activity.
И там (я специально пересмотрел урок) показано это взаимодействие. Даже строка в конце урока говорит нам
Вот еще статья по фрагментам на хабре http://habrahabr.ru/post/167315/Второй фрагмент передал через интерфейс строку в Activity, а оно нашло первый фрагмент и отобразило там эту строку.
Кто ищет, тот всегда найдет.
Re: Урок 104. Android 3. Fragments. Lifecycle
Пожевал и в рот положил.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 104. Android 3. Fragments. Lifecycle
Если б и я не имел желания отвечать по делу, я бы тоже отмахнулся, дав ближайшую ссылку) Не оригинально.
Я привел код из Main.java, если бы посмотрели, то сами поняли, что простой перенос невозможен -
это уже не раз мною проверено. Все статьи по фрагментам здесь читаны-перечитаны. Нужен толковый совет.
Замечу, не сделать за меня, а направить.
Я привел код из Main.java, если бы посмотрели, то сами поняли, что простой перенос невозможен -
это уже не раз мною проверено. Все статьи по фрагментам здесь читаны-перечитаны. Нужен толковый совет.
Замечу, не сделать за меня, а направить.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 104. Android 3. Fragments. Lifecycle
Я не нашел НИЧЕГО о том, что такое SomeView. Основной код? Ну так это ни о чем не говорит. Вызываете какие-то методы. Я толком так и не понял что вы хотите.
Да, есть. Они указаны в том уроке о котором я и написал. Там указано два фрагмента на одном экране, которые друг с другом взаимодействуют.Как бы вы посоветовали переделать это приложение? Понятно, что есть способ - в main.xml дать два фрагмента, куда поместить классы – SomeView и SecondFragment. Но он у меня стабильно не запускается, видимо, что-то делаю не то. Поэтому хочу спросить, есть ли способ (чтобы наверняка) совместить на одном экране два этих фрагмента?
Что проверено? Перенос чего? Я ничего не вижу в вашем коде. Там ничего нет, что связано с фрагментами. Никаких транзакций добавлений, ничего! Вы пишете абстрактно. Никакой конкретики.Я привел код из Main.java, если бы посмотрели, то сами поняли, что простой перенос невозможен -
это уже не раз мною проверено.
Re: Урок 104. Android 3. Fragments. Lifecycle
Замучился уже. По фрагментам все получается - по урокам созданы два фрагмента, простые текстовые вьюшки они показывают.
Но мне нужно, чтобы один из фрагментов (который extends Fragment) делал то же, что и приведенный десятью постами выше код. Там в файле Main (который extends Activity) выводятся класс SomeView (который extends View) и main.xml. То есть, мне нужно вывести этот же класс и лэйаут.
Со лэйаутом все проще. Этот код...
...легко заменяется на
Все остальное, если перенести в неизменном виде, подчеркивается (ошибки такие - The method findViewById(int) is undefined for the type Fragment2 и RelativeLayout cannot be resolved to a type). Вот этот код -
Помогите, пожалуйста, понять, как изменить этот код, или хотя бы где, в каком направлении, искать ответ. Все остальное прекрасно, дело только в данном вопросе.
Но мне нужно, чтобы один из фрагментов (который extends Fragment) делал то же, что и приведенный десятью постами выше код. Там в файле Main (который extends Activity) выводятся класс SomeView (который extends View) и main.xml. То есть, мне нужно вывести этот же класс и лэйаут.
Со лэйаутом все проще. Этот код...
Код: Выделить всё
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Код: Выделить всё
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.main, null);
return v;
Код: Выделить всё
RelativeLayout layout =
(RelativeLayout) findViewById(R.id.relativeLayout);
view = new SomeView(this, getPreferences(Context.MODE_PRIVATE),
layout);
layout.addView(view, 0);
}
@Override
public void onPause() {
super.onPause();
view.pause();
}
@Override
public void onResume() {
super.onResume();
view.resume(this);
}
Re: Урок 104. Android 3. Fragments. Lifecycle
[syntax=java]public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.main, null);
RelativeLayout layout =
(RelativeLayout) v.findViewById(R.id.relativeLayout);
view = new SomeView(this, getPreferences(Context.MODE_PRIVATE), layout);
layout.addView(view, 0);
return v;
}
[/syntax]
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.main, null);
RelativeLayout layout =
(RelativeLayout) v.findViewById(R.id.relativeLayout);
view = new SomeView(this, getPreferences(Context.MODE_PRIVATE), layout);
layout.addView(view, 0);
return v;
}
[/syntax]
Последний раз редактировалось Viewer 15 июн 2014, 10:45, всего редактировалось 1 раз.
Re: Урок 104. Android 3. Fragments. Lifecycle
Не помогает, к сожалению. Вы переставили возврат v в конец и продублировали создание view.
Re: Урок 104. Android 3. Fragments. Lifecycle
Это я копипастил из ваших постов, писал со смартфона, возможно лишнего "зацепил". Но смысл от этого не поменялся, у фрагментов нет методов для работы напрямую с корневым View с помощью findViewById как в Activity, поэтому его нужно сначала получить методом getView () либо воспользоваться в том месте, где он создается (как я вам показал в предыдущем посте в методе onCreateView ())avex писал(а):Не помогает, к сожалению. Вы переставили возврат v в конец и продублировали создание view.
Что касается getView () то можете использовать его:
RelativeLayout layout = (RelativeLayout) getView ().findViewById(R.id.relativeLayout);
Подправил предыдущий пост, убрал дубликат
Re: Урок 104. Android 3. Fragments. Lifecycle
Спасибо, getView() снимает часть вопросов, но они возникают теперь к следующей строке:
к view - "View cannot be resolved to a variable"
и к getPreferences - "The method getPreferences(int) is undefined for the type Fragment2"
к view - "View cannot be resolved to a variable"
и к getPreferences - "The method getPreferences(int) is undefined for the type Fragment2"
Re: Урок 104. Android 3. Fragments. Lifecycle
Это из вашего же кода, раз вы так написали, значит вы в классе должны были задекларировать (в азах ООП и Java нужно разбираться, иначе у вас ничего не получится)avex писал(а): к view - "View cannot be resolved to a variable"
А этот метод из Activity (точнее из контекста от которого она наследуется) поэтому вам нужно сначала получить Activity во фрагменте,avex писал(а): и к getPreferences - "The method getPreferences(int) is undefined for the type Fragment2"
для этого у фрагментов есть метод getActivity()
Таким образом
getPreferences нужно заменить на getActivity().getPreferences