Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
1

Fragment and context

11.01.2013, 14:33. Показов 5128. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть шерлокбар.

Два таба у него.

Каждому табу привязан свой фрагмент через tabListener.

Хочу чтобы в первом табе высвечивались параметры соседних базовых станций, соответственно нужен TelephonyManager.

Создаю его:

TelephonyManager manage = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

Но контекст в фрагменте не работает.

Есть ли способы получить контекст в классе фрагмента (у меня несколько фрагментов и каждый в своем ява файле-класса)?

Я же мыслю правильно - в каждом фрагменте по идее можно накодить что угодно, а потом закинуть его в куда-либо (таб, активити)?

Добавлено через 16 минут
Голова начинает зависать!

Проблема вроде решена getActivity().

Не подскажете, как мне в пять TextView одного фрагмента программно вставлять текст, findViewById не фурычит?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2013, 14:33
Ответы с готовыми решениями:

Обновление fragment из другого fragment
Добрый вечер всем!! Подскажите пожалуйста как обновить один фрагмент из другого (а именно TextView...

Fragment
Eсть Activity состоящий из ActionBar в котором две вкладки, каждая из них это Fragment. Не пойму...

CONTEXT
Добрый день! Друзья, нужна помощь. осуществляю миграцию с Оракла на PostgreSQL. столкнулся с...

Context и this
Есть вот такой класс public class SpecialtyListActivity extends AppCompatActivity { ...

15
97 / 96 / 4
Регистрация: 14.02.2009
Сообщений: 311
11.01.2013, 14:47 2
Java
1
  ((TextView)getView().findViewById(R.id.textView1)).setText(Integer.toString(commonTime));
1
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
12.01.2013, 12:08  [ТС] 3
Спасибо большое!

Добавлено через 20 часов 52 минуты
Цитата Сообщение от flashok Посмотреть сообщение
((TextView)getView().findViewById(R.id.textView1)).setText(Integer.toString(comm onTime));
Не могу никак понять смысл LayoutInflater.

Вот есть у меня layout файл one.xml в нем LinearLayout в котором два TextView.

Вот я во фрагменте пишу:

Java
1
2
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
           {   return inflater.inflate(R.layout.one, null); }
Я на экране увижу 2 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
Цитата Сообщение от Klafe Посмотреть сообщение
Спасибо большое!

Inflate возвращает view. Все было бы логично, если бы у меня в моем layout-файле был бы один TextView, inflater бы взял его из нашего файла и разместил туда куда мы скажем.

Но в параметре у него мы же пишем наш лэйаут, а в нем у нас есть ViewGroup (наш LinearLayout), что с ним произойдет? И у нас 2 TextView, что с ними происходит?
ViewGroup extends View
что тут непонятного, вернет всю иерархию т.е. LinearLayout, который содержит дочерние элементы.


Цитата Сообщение от Klafe Посмотреть сообщение
И метод getView(), как написано в инструкции, возвращает root view. Тогда что у нас является родителем после inflater?
в вашем случае LinearLayout и будет root view.
0
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
16.01.2013, 15:47  [ТС] 5
Цитата Сообщение от flashok Посмотреть сообщение
Код Java(TM) 2 Platform Standard Edition 5.01
* ((TextView)getView().findViewById(R.id.textView1)).setText(Integer.toString(comm onTime));
Почему-то у меня не работает!

Постоянно запариваюсь со всякими мелочами!

У меня есть фрагмент:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class FragmentOne extends SherlockFragment {
 
    
    @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
          Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frone, null);
        return view; 
        }
    
    public void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
        
      }
R.layout.frone - здесь у меня LinearLayout, а в нем TextView.

Хочу в этот TextView вставить текст.

Получается только при написании
Java
1
2
        TextView Text = (TextView) view.findViewById(R.id.text);
        Text.setText("ПРИВЕТ");
в методе onCreateView(). Причем именно view.findViewById(R.id.text), а getView().findViewById(R.id.text) не работает (хотя по идее должна).

А я хочу в 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 (возможно у вас активити)

у вас путаница где фрагмент, а где активити
и в коде мешанина


Получается, что я не могу менять UI не из UI потока???
да это так
но у вас по коду этого нет


А в onCreateView() у меня что UI поток???
да
0
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
16.01.2013, 16:13  [ТС] 7
Что за борода, в onResume() все работает???
А как же onCreate()??

Добавлено через 4 минуты
Цитата Сообщение от flashok Посмотреть сообщение
у вас точно фрагмент ???
Точно фрагмент.

Вот так: public class FragmentOne extends SherlockFragment

Java
1
2
3
public void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
В фрагментах тоже имеется.

Добавлено через 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
Цитата Сообщение от flashok Посмотреть сообщение
я просто его ни кого не использовал
Я вообще не понимаю зачем он нужен если в нем простецкие, но очень нужные вещи не работают!
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
Цитата Сообщение от V0v1k Посмотреть сообщение
до или после super.onCreate(savedInstanceState); пытаетесь вставить текст?
Теперь и до, и после.

Прога не запускается на телефоне.

Когда уберу 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
Цитата Сообщение от Klafe Посмотреть сообщение
Прога не запускается на телефоне.
что значит не запускается? вы явно чего-то не договариваете. не заставляйте меня вытягивать с вас по одному слову...
0
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
16.01.2013, 16:40  [ТС] 13
Только в onResume() заменить view на getView().

Добавлено через 50 секунд
Цитата Сообщение от V0v1k Посмотреть сообщение
что значит не запускается? вы явно чего-то не договариваете. не заставляйте меня вытягивать с вас по одному слову...
Ща логи сделаю!

Добавлено через 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
Цитата Сообщение от V0v1k Посмотреть сообщение
может будете делать это в методе onCreateView? вроде для этого он и есть)
Можно конечно и в нем делать, но само название этого метода подразумевает create view, а сам код который должен выполняться в фрагменте мне кажется будет правильнее реализовывать в методе onCreate.

Мне просто нужно чтобы выполнялся определенный код, а по его итогам менялись TextView.

Добавлено через 4 часа 1 минуту
Вывод: в фрагментах весь код пишем в onCreate (на обязательно) но, то, что хотим вывести на экран сохраняем в переменные класса, а затем эти переменные выводим куда хотим, но в onCreateView или в onResume, короче после или в onCreateView.

Добавлено через 1 час 7 минут
Цитата Сообщение от V0v1k Посмотреть сообщение
до или после super.onCreate(savedInstanceState); пытаетесь вставить текст?
А как правильно? И в методе, например, onPause() кодить после super.onPause() или до?

В инструкции написано, что сначала нужно вызывать метод суперкласса super.onPause(), но вот зачем? Если мы и так определяем что нам делать в onPause()?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.01.2013, 13:18 16
Цитата Сообщение от Klafe Посмотреть сообщение
Можно конечно и в нем делать, но само название этого метода подразумевает create view, а сам код который должен выполняться в фрагменте мне кажется будет правильнее реализовывать в методе onCreate.
Мне просто нужно чтобы выполнялся определенный код, а по его итогам менялись TextView.
Добавлено через 4 часа 1 минуту
Вывод: в фрагментах весь код пишем в onCreate (на обязательно) но, то, что хотим вывести на экран сохраняем в переменные класса, а затем эти переменные выводим куда хотим, но в onCreateView или в onResume, короче после или в onCreateView.
ну, onCreateView первое место где доступно view, а onResume может выполняется множество раз.

Цитата Сообщение от Klafe Посмотреть сообщение
А как правильно?
обычно пишут после вызова метода сеперкласса.
0
17.01.2013, 13:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2013, 13:18
Помогаю со студенческими работами здесь

MapFragment в Fragment
Как получить MapFragment который находится в Fragment? Сейчас использую такой способ: MapFragment...

Activity и Fragment
Всем добрый вечер. Создал приложение новостей с 2 Activity и 1 Adapter. Сейчас решил в проект...

SwipeRefreshLayout + Fragment
Имеется mainActivity c <android.support.v4.widget.SwipeRefreshLayout ...

set и get из fragment
Здравствуйте! Есть 3 таба которые реализованы с помощью fragment. На табах есть кнопки, текстовые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru