Страница 1 из 1

Fragment Result

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

Re: Fragment Result

Добавлено: 04 окт 2014, 14:08
Foenix
Почитай урок об активити и фрагментах (один из первых) там было про взаимодействие и как из активити найти фрагмент и вывести в нем информацию.

Re: Fragment Result

Добавлено: 09 окт 2014, 01:30
Krager
Ну хорошо, ни в какую не хочет работать передача через 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;
    }
}
Кто может помочь? Заранее благодарен.

Re: Fragment Result

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

Re: Fragment Result

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

Re: Fragment Result

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

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

Re: Fragment Result

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

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

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

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

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

Re: Fragment Result

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

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

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

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

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

Re: Fragment Result

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

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

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

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

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

Re: Fragment Result

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

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