Herr. P.
- Forum-Beiträge: 2
21.11.2013, 08:29:10 via Website
21.11.2013 08:29:10 via Website
Hallo,
Ich habe ein Fragment (YearsFragment) mit einer Liste. Wenn ich ein Element der Liste anklick wird ein neues Fragment (EventsFragment) ausgeführt. Der Loader des neuen Fragments ladet eine neue Liste. Soweit so gut.
Wenn ich jetzt zurück auf das erste Fragement (YearsFragment) gehe und ich das selbe Element wieder anklicke ladet das EventsFragment die liste neu, jedoch würde ich gerne mit den alten schon geladenen Daten arbeiten.
EventsActivity:
YearsFragment:
EventsFragment:
Wie soll ich das mit onResume angehen?
LG, Herr. P.
Ich habe ein Fragment (YearsFragment) mit einer Liste. Wenn ich ein Element der Liste anklick wird ein neues Fragment (EventsFragment) ausgeführt. Der Loader des neuen Fragments ladet eine neue Liste. Soweit so gut.
Wenn ich jetzt zurück auf das erste Fragement (YearsFragment) gehe und ich das selbe Element wieder anklicke ladet das EventsFragment die liste neu, jedoch würde ich gerne mit den alten schon geladenen Daten arbeiten.
EventsActivity:
1public class EventsActivity extends FragmentActivity implements YearsFragment.OnYearSelectedListener, EventsFragment.OnEventSelectedListener{
2
3private boolean screenSizeLarge;
4private EventsFragment eventFrag = null;
5
6@Override
7protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.years_events);
10
11 // Check whether the activity is using the layout version with the fragment_container FrameLayout (small Display).
12 if (findViewById(R.id.fragment_container) != null) {
13 screenSizeLarge = false; //one-pane
14
15 YearsFragment firstFragment = new YearsFragment();
16
17 firstFragment.setArguments(getIntent().getExtras());
18
19 // Add the fragment to the 'fragment_container' FrameLayout
20 getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment).commit();
21 }else{
22 screenSizeLarge = true; //two-pane
23 }
24}
25
26@Override
27public void onYearSelected(Years year) {
28 // The user selected the year from the YearsFragment
29
30 if (screenSizeLarge) {
31 // two-pane layout
32
33 // Capture the events fragment from the activity layout
34 eventFrag = (EventsFragment) getSupportFragmentManager().findFragmentById(R.id.event_fragment);
35
36 // Call a method in the EventFragment to update its content
37 eventFrag.updateEventsView(year);
38
39 } else {
40 //one-pane layout
41
42 if(eventFrag == null){
43 eventFrag = new EventsFragment();
44 }
45
46 Bundle args = new Bundle();
47 args.putInt("year", Integer.parseInt(year.getYear()));
48 eventFrag.setArguments(args);
49
50 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
51
52 // Replace whatever is in the fragment_container view with this fragment,
53 // and add the transaction to the back stack so the user can navigate back
54 transaction.replace(R.id.fragment_container, eventFrag);
55 transaction.addToBackStack(null);
56 // Commit the transaction
57 transaction.commit();
58 }
59}}
2
3private boolean screenSizeLarge;
4private EventsFragment eventFrag = null;
5
6@Override
7protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.years_events);
10
11 // Check whether the activity is using the layout version with the fragment_container FrameLayout (small Display).
12 if (findViewById(R.id.fragment_container) != null) {
13 screenSizeLarge = false; //one-pane
14
15 YearsFragment firstFragment = new YearsFragment();
16
17 firstFragment.setArguments(getIntent().getExtras());
18
19 // Add the fragment to the 'fragment_container' FrameLayout
20 getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment).commit();
21 }else{
22 screenSizeLarge = true; //two-pane
23 }
24}
25
26@Override
27public void onYearSelected(Years year) {
28 // The user selected the year from the YearsFragment
29
30 if (screenSizeLarge) {
31 // two-pane layout
32
33 // Capture the events fragment from the activity layout
34 eventFrag = (EventsFragment) getSupportFragmentManager().findFragmentById(R.id.event_fragment);
35
36 // Call a method in the EventFragment to update its content
37 eventFrag.updateEventsView(year);
38
39 } else {
40 //one-pane layout
41
42 if(eventFrag == null){
43 eventFrag = new EventsFragment();
44 }
45
46 Bundle args = new Bundle();
47 args.putInt("year", Integer.parseInt(year.getYear()));
48 eventFrag.setArguments(args);
49
50 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
51
52 // Replace whatever is in the fragment_container view with this fragment,
53 // and add the transaction to the back stack so the user can navigate back
54 transaction.replace(R.id.fragment_container, eventFrag);
55 transaction.addToBackStack(null);
56 // Commit the transaction
57 transaction.commit();
58 }
59}}
YearsFragment:
1public class YearsFragment extends ListFragment implements LoaderManager.LoaderCallbacks<List<Years>>{
2YearsAdapter adapter;
3
4// The container Activity must implement this interface so the frag can deliver messages
5OnYearSelectedListener mCallback;
6public interface OnYearSelectedListener {
7 /** Called by YearsFragment when a list item is selected */
8 public void onYearSelected(Years year);
9}
10
11public void onActivityCreated(Bundle savedInstanceState) {
12 super.onActivityCreated(savedInstanceState);
13}
14
15
16@Override
17public void onResume() {
18 super.onResume();
19 getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
20
21 adapter = new YearsAdapter(getActivity());
22 setListAdapter(adapter);
23
24 setEmptyText("No Data Here");
25 setListShown(false);
26
27 getLoaderManager().initLoader(0, null, this);
28}
29
30@Override
31public void onAttach(Activity activity){
32 super.onAttach(activity);
33
34 try{
35 mCallback = (OnYearSelectedListener) activity;
36 } catch (ClassCastException e){
37 throw new ClassCastException(activity.toString() +
38 "must implement OnYearSelectedListener");
39 }
40}
41
42@Override
43public void onListItemClick(ListView l, View v, int position, long id) {
44 mCallback.onYearSelected(adapter.getItem(position));
45}
46
47//implements Loader
48
49@Override
50public Loader<List<Years>> onCreateLoader(int arg0, Bundle arg1) {
51 Log.i("YearsFragment","YearsFragment.onCreateLoader");
52
53 return new YearsLoader(getActivity());
54}
55
56@Override
57public void onLoadFinished(Loader<List<Years>> arg0, List<Years> data) {
58 Log.i("YearsFragment","YearsFragment.onLoadFinished");
59
60 adapter.setData(data);
61
62 if(isResumed()){
63 setListShown(true);
64 }else{
65 setListShownNoAnimation(false);
66 }
67}
68
69@Override
70public void onLoaderReset(Loader<List<Years>> arg0) {
71 Log.i("YearsFragment","YearsFragment.onLoaderReset");
72
73 adapter.setData(null);
74}}
2YearsAdapter adapter;
3
4// The container Activity must implement this interface so the frag can deliver messages
5OnYearSelectedListener mCallback;
6public interface OnYearSelectedListener {
7 /** Called by YearsFragment when a list item is selected */
8 public void onYearSelected(Years year);
9}
10
11public void onActivityCreated(Bundle savedInstanceState) {
12 super.onActivityCreated(savedInstanceState);
13}
14
15
16@Override
17public void onResume() {
18 super.onResume();
19 getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
20
21 adapter = new YearsAdapter(getActivity());
22 setListAdapter(adapter);
23
24 setEmptyText("No Data Here");
25 setListShown(false);
26
27 getLoaderManager().initLoader(0, null, this);
28}
29
30@Override
31public void onAttach(Activity activity){
32 super.onAttach(activity);
33
34 try{
35 mCallback = (OnYearSelectedListener) activity;
36 } catch (ClassCastException e){
37 throw new ClassCastException(activity.toString() +
38 "must implement OnYearSelectedListener");
39 }
40}
41
42@Override
43public void onListItemClick(ListView l, View v, int position, long id) {
44 mCallback.onYearSelected(adapter.getItem(position));
45}
46
47//implements Loader
48
49@Override
50public Loader<List<Years>> onCreateLoader(int arg0, Bundle arg1) {
51 Log.i("YearsFragment","YearsFragment.onCreateLoader");
52
53 return new YearsLoader(getActivity());
54}
55
56@Override
57public void onLoadFinished(Loader<List<Years>> arg0, List<Years> data) {
58 Log.i("YearsFragment","YearsFragment.onLoadFinished");
59
60 adapter.setData(data);
61
62 if(isResumed()){
63 setListShown(true);
64 }else{
65 setListShownNoAnimation(false);
66 }
67}
68
69@Override
70public void onLoaderReset(Loader<List<Years>> arg0) {
71 Log.i("YearsFragment","YearsFragment.onLoaderReset");
72
73 adapter.setData(null);
74}}
EventsFragment:
1public class EventsFragment extends ListFragment implements LoaderManager.LoaderCallbacks<List<Events>>{
2EventsAdapter adapter;
3private int year;
4
5public EventsFragment(){
6 year = Calendar.getInstance().get(Calendar.YEAR);
7}
8
9// The container Activity must implement this interface so the frag can deliver messages
10OnEventSelectedListener mCallback;
11public interface OnEventSelectedListener {
12 /** Called by YearsFragment when a list item is selected */
13 public void onEventSelected(Events event);
14}
15
16public void onActivityCreated(Bundle savedInstanceState) {
17 super.onActivityCreated(savedInstanceState);
18 getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
19
20 Log.i("EventsFragment","EventsFragment.onActivityCreated");
21
22 adapter = new EventsAdapter(getActivity());
23 setListAdapter(adapter);
24
25 setEmptyText("No Data Here");
26 setListShown(false);
27}
28
29@Override
30public void onResume() {
31 super.onResume();
32 Bundle args = this.getArguments();
33 if(args != null){
34 year = args.getInt("year");
35 }
36 updateEventsView(year);
37 // The activity has become visible (it is now "resumed").
38}
39
40@Override
41public void onAttach(Activity activity){
42 super.onAttach(activity);
43
44 try{
45 mCallback = (OnEventSelectedListener) activity;
46 } catch (ClassCastException e){
47 throw new ClassCastException(activity.toString() +
48 "must implement OnEventsSelectedListener");
49 }
50}
51
52@Override
53public void onListItemClick(ListView l, View v, int position, long id) {
54 mCallback.onEventSelected(adapter.getItem(position));
55}
56
57public void updateEventsView(Years year) {
58 this.year = Integer.parseInt(year.getYear());
59 getLoaderManager().initLoader(this.year, null, this);
60}
61
62public void updateEventsView(int year) {
63 this.year = year;
64 getLoaderManager().initLoader(this.year, null, this);
65}
66
67//Loader
68@Override
69public Loader<List<Events>> onCreateLoader(int arg0, Bundle arg1) {
70 Log.i("EventsFragment","EventsFragment.onCreateLoader");
71
72 return new EventsLoader(getActivity(),this.year);
73}
74
75@Override
76public void onLoadFinished(Loader<List<Events>> arg0, List<Events> data) {
77 Log.i("EventsFragment","EventsFragment.onLoadFinished");
78
79 adapter.setData(data);
80
81 if(isResumed()){
82 setListShown(true);
83 }else{
84 setListShownNoAnimation(false);
85 }
86}
87
88@Override
89public void onLoaderReset(Loader<List<Events>> arg0) {
90 Log.i("EventsFragment","EventsFragment.onLoaderReset");
91
92 adapter.setData(null);
93} }
2EventsAdapter adapter;
3private int year;
4
5public EventsFragment(){
6 year = Calendar.getInstance().get(Calendar.YEAR);
7}
8
9// The container Activity must implement this interface so the frag can deliver messages
10OnEventSelectedListener mCallback;
11public interface OnEventSelectedListener {
12 /** Called by YearsFragment when a list item is selected */
13 public void onEventSelected(Events event);
14}
15
16public void onActivityCreated(Bundle savedInstanceState) {
17 super.onActivityCreated(savedInstanceState);
18 getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
19
20 Log.i("EventsFragment","EventsFragment.onActivityCreated");
21
22 adapter = new EventsAdapter(getActivity());
23 setListAdapter(adapter);
24
25 setEmptyText("No Data Here");
26 setListShown(false);
27}
28
29@Override
30public void onResume() {
31 super.onResume();
32 Bundle args = this.getArguments();
33 if(args != null){
34 year = args.getInt("year");
35 }
36 updateEventsView(year);
37 // The activity has become visible (it is now "resumed").
38}
39
40@Override
41public void onAttach(Activity activity){
42 super.onAttach(activity);
43
44 try{
45 mCallback = (OnEventSelectedListener) activity;
46 } catch (ClassCastException e){
47 throw new ClassCastException(activity.toString() +
48 "must implement OnEventsSelectedListener");
49 }
50}
51
52@Override
53public void onListItemClick(ListView l, View v, int position, long id) {
54 mCallback.onEventSelected(adapter.getItem(position));
55}
56
57public void updateEventsView(Years year) {
58 this.year = Integer.parseInt(year.getYear());
59 getLoaderManager().initLoader(this.year, null, this);
60}
61
62public void updateEventsView(int year) {
63 this.year = year;
64 getLoaderManager().initLoader(this.year, null, this);
65}
66
67//Loader
68@Override
69public Loader<List<Events>> onCreateLoader(int arg0, Bundle arg1) {
70 Log.i("EventsFragment","EventsFragment.onCreateLoader");
71
72 return new EventsLoader(getActivity(),this.year);
73}
74
75@Override
76public void onLoadFinished(Loader<List<Events>> arg0, List<Events> data) {
77 Log.i("EventsFragment","EventsFragment.onLoadFinished");
78
79 adapter.setData(data);
80
81 if(isResumed()){
82 setListShown(true);
83 }else{
84 setListShownNoAnimation(false);
85 }
86}
87
88@Override
89public void onLoaderReset(Loader<List<Events>> arg0) {
90 Log.i("EventsFragment","EventsFragment.onLoaderReset");
91
92 adapter.setData(null);
93} }
Wie soll ich das mit onResume angehen?
LG, Herr. P.
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.