1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
|
|
1 | |
Fragment and context11.01.2013, 14:33. Показов 5128. Ответов 15
Метки нет (Все метки)
Есть шерлокбар.
Два таба у него. Каждому табу привязан свой фрагмент через tabListener. Хочу чтобы в первом табе высвечивались параметры соседних базовых станций, соответственно нужен TelephonyManager. Создаю его: TelephonyManager manage = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); Но контекст в фрагменте не работает. Есть ли способы получить контекст в классе фрагмента (у меня несколько фрагментов и каждый в своем ява файле-класса)? Я же мыслю правильно - в каждом фрагменте по идее можно накодить что угодно, а потом закинуть его в куда-либо (таб, активити)? Добавлено через 16 минут Голова начинает зависать! Проблема вроде решена getActivity(). Не подскажете, как мне в пять TextView одного фрагмента программно вставлять текст, findViewById не фурычит?
0
|
11.01.2013, 14:33 | |
Ответы с готовыми решениями:
15
Обновление fragment из другого fragment Fragment CONTEXT Context и this |
97 / 96 / 4
Регистрация: 14.02.2009
Сообщений: 311
|
||||||
11.01.2013, 14:47 | 2 | |||||
1
|
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
|
||||||
12.01.2013, 12:08 [ТС] | 3 | |||||
Спасибо большое!
Добавлено через 20 часов 52 минуты Не могу никак понять смысл LayoutInflater. Вот есть у меня layout файл one.xml в нем LinearLayout в котором два TextView. Вот я во фрагменте пишу:
Inflate возвращает view. Все было бы логично, если бы у меня в моем layout-файле был бы один TextView, inflater бы взял его из нашего файла и разместил туда куда мы скажем. Но в параметре у него мы же пишем наш лэйаут, а в нем у нас есть ViewGroup (наш LinearLayout), что с ним произойдет? И у нас 2 TextView, что с ними происходит? И метод getView(), как написано в инструкции, возвращает root view. Тогда что у нас является родителем после inflater?
0
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
13.01.2013, 13:01 | 4 |
ViewGroup extends View
что тут непонятного, вернет всю иерархию т.е. LinearLayout, который содержит дочерние элементы. в вашем случае LinearLayout и будет root view.
0
|
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
|
|||||||||||
16.01.2013, 15:47 [ТС] | 5 | ||||||||||
Почему-то у меня не работает!
Постоянно запариваюсь со всякими мелочами! У меня есть фрагмент:
Хочу в этот TextView вставить текст. Получается только при написании
А я хочу в onCreate() выполнять код и по итогам этого кода менять текст. Но ни view.findViewById(R.id.text), ни getView().findViewById(R.id.text) в onCreate() не работает. Получается, что я не могу менять UI не из UI потока??? А в onCreateView() у меня что UI поток??? Завис я че-то!
0
|
97 / 96 / 4
Регистрация: 14.02.2009
Сообщений: 311
|
|
16.01.2013, 16:00 | 6 |
если у вас фрагмент, этого кода не должно быть, он используеться, если у вас активити
Код
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } в SherlockFragment у вас точно написано extends Fragment (возможно у вас активити) у вас путаница где фрагмент, а где активити и в коде мешанина но у вас по коду этого нет
0
|
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
|
||||||
16.01.2013, 16:13 [ТС] | 7 | |||||
Что за борода, в onResume() все работает???
А как же onCreate()?? Добавлено через 4 минуты Точно фрагмент. Вот так: public class FragmentOne extends SherlockFragment
Добавлено через 6 минут Я так понимаю что onCreate(Bundle savedInstanceState) в фрагментах нужен чтобы сохранялась всякая борода когда фрагмент на паузе или еще что (в developer(е) пером пишут).
0
|
97 / 96 / 4
Регистрация: 14.02.2009
Сообщений: 311
|
|
16.01.2013, 16:15 | 8 |
да есть, я ошибся
я просто его ни кого не использовал
0
|
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
|
|
16.01.2013, 16:17 [ТС] | 9 |
Я вообще не понимаю зачем он нужен если в нем простецкие, но очень нужные вещи не работают!
0
|
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
|
|
16.01.2013, 16:20 | 10 |
что значит "не работает"? не компилится? екзепшен?
до или после super.onCreate(savedInstanceState); пытаетесь вставить текст?
0
|
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
|
|
16.01.2013, 16:25 [ТС] | 11 |
Теперь и до, и после.
Прога не запускается на телефоне. Когда уберу TextView Text = (TextView) view.findViewById(R.id.text), все запускается. TextView Text = (TextView) view.findViewById(R.id.text) работает в onResume() и в onCreateView()!
0
|
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
|
|
16.01.2013, 16:26 | 12 |
что значит не запускается? вы явно чего-то не договариваете. не заставляйте меня вытягивать с вас по одному слову...
0
|
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
|
|
16.01.2013, 16:40 [ТС] | 13 |
Только в onResume() заменить view на getView().
Добавлено через 50 секунд Ща логи сделаю! Добавлено через 9 минут 01-17 00:36:08.191: W/dalvikvm(8911): threadid=1: thread exiting with uncaught exception (group=0x400259f8) 01-17 00:36:08.191: E/AndroidRuntime(8911): FATAL EXCEPTION: main 01-17 00:36:08.191: E/AndroidRuntime(8911): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kaa.actionbarsherlock/com.kaa.actionbarsherlock.MainActivity}: java.lang.NullPointerException 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.app.ActivityThread.access$2300(ActivityThread.java:135) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.os.Handler.dispatchMessage(Handler.java:99) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.os.Looper.loop(Looper.java:144) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.app.ActivityThread.main(ActivityThread.java:4937) 01-17 00:36:08.191: E/AndroidRuntime(8911): at java.lang.reflect.Method.invokeNative(Native Method) 01-17 00:36:08.191: E/AndroidRuntime(8911): at java.lang.reflect.Method.invoke(Method.java:521) 01-17 00:36:08.191: E/AndroidRuntime(8911): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 01-17 00:36:08.191: E/AndroidRuntime(8911): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 01-17 00:36:08.191: E/AndroidRuntime(8911): at dalvik.system.NativeStart.main(Native Method) 01-17 00:36:08.191: E/AndroidRuntime(8911): Caused by: java.lang.NullPointerException 01-17 00:36:08.191: E/AndroidRuntime(8911): at com.kaa.actionbarsherlock.FragmentOne.onCreate(FragmentOne.java:31) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:834) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080 ) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.ja va:1416) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:505) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1211) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.app.Activity.performStart(Activity.java:3822) 01-17 00:36:08.191: E/AndroidRuntime(8911): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2760) 01-17 00:36:08.191: E/AndroidRuntime(8911): ... 11 more Логи услышали, что я хочу их сделать и категорически отказывались показываться!!!! Добавлено через 1 минуту TextView LACText = (TextView) getView().findViewById(R.id.LAC) - без этого в onCreate все работает Добавлено через 54 секунды это 31-ая строка Добавлено через 48 секунд Чес слов ничего не скрываю!!!)))
0
|
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
|
|
16.01.2013, 16:53 | 14 |
ну, похоже на то, что onCreate происходит раньше чем onCreateView, соответственно getView() в методе onCreate возвращает null и вы получаете NullPointerException
Добавлено через 1 минуту может будете делать это в методе onCreateView? вроде для этого он и есть)
0
|
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
|
|
17.01.2013, 09:51 [ТС] | 15 |
Можно конечно и в нем делать, но само название этого метода подразумевает create view, а сам код который должен выполняться в фрагменте мне кажется будет правильнее реализовывать в методе onCreate.
Мне просто нужно чтобы выполнялся определенный код, а по его итогам менялись TextView. Добавлено через 4 часа 1 минуту Вывод: в фрагментах весь код пишем в onCreate (на обязательно) но, то, что хотим вывести на экран сохраняем в переменные класса, а затем эти переменные выводим куда хотим, но в onCreateView или в onResume, короче после или в onCreateView. Добавлено через 1 час 7 минут А как правильно? И в методе, например, onPause() кодить после super.onPause() или до? В инструкции написано, что сначала нужно вызывать метод суперкласса super.onPause(), но вот зачем? Если мы и так определяем что нам делать в onPause()?
0
|
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
|
|
17.01.2013, 13:18 | 16 |
ну, onCreateView первое место где доступно view, а onResume может выполняется множество раз.
обычно пишут после вызова метода сеперкласса.
0
|
17.01.2013, 13:18 | |
17.01.2013, 13:18 | |
Помогаю со студенческими работами здесь
16
MapFragment в Fragment Activity и Fragment SwipeRefreshLayout + Fragment set и get из fragment Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |