Fragment Result

Интерфейс, диалоги, темы, стили, меню
Ответить
Krager
Сообщения: 4
Зарегистрирован: 14 сен 2014, 20:49

Fragment Result

Сообщение Krager » 04 окт 2014, 00:23

Доброго времени суток.
Суть: Есть Activity, в ней AsyncTask. Также есть Элемент табы (ActionBarActivity), которые вынуждают меня разбить приложение на фрагменты. AsyncTask > onPostExecute возвращает мне переменную result.
Вопрос: Как вывести переменную result во Fragment1 > textView1?
Заранее благодарю.

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

Re: Fragment Result

Сообщение Foenix » 04 окт 2014, 14:08

Почитай урок об активити и фрагментах (один из первых) там было про взаимодействие и как из активити найти фрагмент и вывести в нем информацию.
R.id.team

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

Krager
Сообщения: 4
Зарегистрирован: 14 сен 2014, 20:49

Re: Fragment Result

Сообщение Krager » 09 окт 2014, 01:30

Ну хорошо, ни в какую не хочет работать передача через Bundle
MainActivity

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

@Override
protected void onCreate(Bundle savedInstanceState) {
// ... Здесь вызываются ActionBarTabs 2.3
        Bundle bundle=new Bundle();
        bundle.putString("name", "From Activity");
        Fragment1 fragobj=new Fragment1();
        fragobj.setArguments(bundle);
}
Fragment1

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

public class Fragment1 extends Fragment {
	TextView MyText;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frt, container, false);
        MyText = (TextView) view.findViewById(R.id.Stro);
	if(this.getArguments() != null){// Просто ничего не возвращает ибо Null
		MyText.setText(String.valueOf(this.getArguments().getString("name")));
	}
	return view;
    }
}
Кто может помочь? Заранее благодарен.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Fragment Result

Сообщение Mikhail_dev » 09 окт 2014, 12:12

[syntax=java5]
Fragment1 fragobj=new Fragment1();
fragobj.setArguments(bundle);
[/syntax]
так не будет работать. Посмотрите тут ( http://developer.android.com/guide/comp ... ments.html ) как создается фрагмент с Bundle (DetailsFragment )

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Fragment Result

Сообщение klblk » 09 окт 2014, 13:06

Mikhail_dev писал(а):так не будет работать. Посмотрите тут ( http://developer.android.com/guide/comp ... ments.html ) как создается фрагмент с Bundle (DetailsFragment )
На первый взгляд по ссылке написано тоже самое, просто вынесено в статическую функцию "newInstance()". В чём подвох?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Fragment Result

Сообщение Mikhail_dev » 09 окт 2014, 13:17

Хотя да, разницы нет, я что-то невнимательно глянул код, думал передача Bundle идет как
Fragment1 fragobj=new Fragment1(bundle);
что не работает.

Надо код смотреть более детально. И еще, попробуйте вызвать getArguments в методе onActivityCreated. Не уверен что поможет, но есть доля сомнения.

Krager
Сообщения: 4
Зарегистрирован: 14 сен 2014, 20:49

Re: Fragment Result

Сообщение Krager » 09 окт 2014, 13:56

Хорошо, есть определенный результат. Передал все-таки через адаптер. Но может кто знает как через Bundle (Который умеет передавать все типы данных), передать определенный ArrayList? Вот с таким не возникнет проблем:

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

ArrayList<String> peopleData = new ArrayList<String>();
Но у меня типизирован:

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

ArrayList<People> peopleData = new ArrayList<People>();

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Fragment Result

Сообщение klblk » 09 окт 2014, 14:04

Krager писал(а):Хорошо, есть определенный результат. Передал все-таки через адаптер. Но может кто знает как через Bundle (Который умеет передавать все типы данных), передать определенный ArrayList? Вот с таким не возникнет проблем:

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

ArrayList<String> peopleData = new ArrayList<String>();
Но у меня типизирован:

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

ArrayList<People> peopleData = new ArrayList<People>();
сделать Parcelable People. И запихивать их в Bundle "putParcelableArrayList()".

Krager
Сообщения: 4
Зарегистрирован: 14 сен 2014, 20:49

Re: Fragment Result

Сообщение Krager » 09 окт 2014, 14:18

klblk писал(а):
Krager писал(а):Хорошо, есть определенный результат. Передал все-таки через адаптер. Но может кто знает как через Bundle (Который умеет передавать все типы данных), передать определенный ArrayList? Вот с таким не возникнет проблем:

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

ArrayList<String> peopleData = new ArrayList<String>();
Но у меня типизирован:

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

ArrayList<People> peopleData = new ArrayList<People>();
сделать Parcelable People. И запихивать их в Bundle "putParcelableArrayList()".
Непонятно! Есть способ проще? Например создать расширение для Bundle которое будет принимать только мой ArrayList<Data>...

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Fragment Result

Сообщение Mikhail_dev » 09 окт 2014, 14:32

Если данные у вас передаются редко, то вполне можно передавать через механизмы сериализации.
Вот пример http://stackoverflow.com/a/14333555
только в People поставьте "implements Serializable"

http://habrahabr.ru/post/174015/ - статья, показывающая как количество передаваемых данных влияет на производительность

Ответить