Ok but onRetainNonConfigurationInstance() is deprecated! What I must use insted of it??
On Oct 18, 12:51 pm, Piren <[email protected]> wrote: > Orientation change will be harder to handle... see this for > help:http://developer.android.com/guide/topics/resources/runtime-changes.html > > > > > > > > On Thursday, October 18, 2012 12:40:49 PM UTC+2, Giosia Gentile wrote: > > > Thank you I will try it this evening!! > > Please can you help me also with the screen orientation??? I used the > > setRetainIstance(true) but it donìt work!! > > > On Thursday, October 18, 2012 10:08:08 AM UTC+2, Piren wrote: > > >>http://developer.android.com/reference/android/support/v4/view/ViewPa...) > > >> just set it to 2 > > >> On Wednesday, October 17, 2012 7:30:54 PM UTC+2, Giosia Gentile wrote: > > >>> it is one week I try to solve this problem whitout success. Please > >>> help me. > > >>> I use the tabs navigation with viewpager. This is the class where I > >>> put the tabs and the FragmentPagerAdapter class: > >>> public class Detail extends SherlockFragmentActivity { > > >>> ViewPager mViewPager; > > >>> TabsAdapter mTabsAdapter; > > >>> @Override > >>> public void onCreate(Bundle savedInstanceState) { > > >>> super.onCreate(savedInstanceState); > > >>> setContentView(R.layout.activity_main); > > >>> ... > > >>> ActionBar bar = getSupportActionBar(); > >>> bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); > >>> bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); > > >>> mViewPager = (ViewPager)findViewById(R.id.pager); > > >>> // Add the tabs > >>> mTabsAdapter = new TabsAdapter(this, bar, mViewPager); > >>> mTabsAdapter.addTab(bar.newTab().setText(R.string.filmtab), > >>> FragmentFilm.class, null); > >>> mTabsAdapter.addTab(bar.newTab().setText(R.string.cinematab), > >>> FragmentCinema.class, null); > >>> mTabsAdapter.addTab(bar.newTab().setText(R.string.dintornitab), > >>> FragmentPdi.class, null); > > >>> if (savedInstanceState != null) { > > >>> bar.setSelectedNavigationItem(savedInstanceState.getInt("tab")); > >>> } > > >>> } > > >>> @Override > >>> protected void onSaveInstanceState(Bundle outState) { > >>> super.onSaveInstanceState(outState); > >>> outState.putInt("tab", > >>> getSupportActionBar().getSelectedNavigationIndex()); > >>> } > > >>> public static class TabsAdapter extends FragmentPagerAdapter > >>> implements ViewPager.OnPageChangeListener, ActionBar.TabListener > >>> { > >>> private final Context mContext; > >>> private final ActionBar mBar; > >>> private final ViewPager mViewPager; > >>> private final ArrayList<TabInfo> mTabs = new > >>> ArrayList<TabInfo>(); > > >>> static final class TabInfo { > >>> private final Class<?> clss; > >>> private final Bundle args; > > >>> TabInfo(Class<?> _class, Bundle _args) { > >>> clss = _class; > >>> args = _args; > >>> } > >>> } > > >>> public TabsAdapter(Detail activity, ActionBar bar, ViewPager > >>> pager) { > >>> super(activity.getSupportFragmentManager()); > >>> mContext = activity; > >>> mBar = bar; > >>> mViewPager = pager; > >>> mViewPager.setAdapter(this); > >>> mViewPager.setOnPageChangeListener(this); > >>> } > > >>> public void addTab(ActionBar.Tab tab, Class<? extends > >>> Fragment> clss, Bundle args) { > >>> TabInfo info = new TabInfo(clss, args); > >>> tab.setTag(info); > >>> tab.setTabListener(this); > >>> mTabs.add(info); > >>> mBar.addTab(tab); > >>> notifyDataSetChanged(); > >>> } > > >>> @Override > >>> public int getCount() { > >>> return mTabs.size(); > >>> } > > >>> @Override > >>> public Fragment getItem(int position) { > >>> TabInfo info = mTabs.get(position); > >>> return Fragment.instantiate(mContext, > >>> info.clss.getName(), info.args); > >>> } > > >>> @Override > >>> public void onPageScrolled(int position, float > >>> positionOffset, int positionOffsetPixels) { > >>> } > > >>> @Override > >>> public void onPageSelected(int position) { > >>> mBar.setSelectedNavigationItem(position); > >>> } > > >>> @Override > >>> public void onPageScrollStateChanged(int state) { > >>> } > > >>> @Override > >>> public void onTabSelected(Tab tab, FragmentTransaction ft) { > >>> Object tag = tab.getTag(); > >>> for (int i=0; i<mTabs.size(); i++) { > >>> if (mTabs.get(i) == tag) { > >>> mViewPager.setCurrentItem(i); > >>> } > >>> } > >>> } > > >>> @Override > >>> public void onTabUnselected(Tab tab, FragmentTransaction ft) > >>> { > > >>> } > > >>> @Override > >>> public void onTabReselected(Tab tab, FragmentTransaction ft) > >>> { > > >>> } > >>> } > >>> } > > >>> The 3 fragment classes are all the same I copy here just one; In the > >>> fragment class I use async task for download the data I need to put in > >>> the view, I do this in the onActivityCreated method: > > >>> public class FragmentFilm extends SherlockFragment > >>> { > > >>> private Detail act; > > >>> private DetailedRec detail_film; > >>> private View view; > >>> private String a; > > >>> @Override > >>> public View onCreateView(LayoutInflater inflater, ViewGroup > >>> container, > >>> Bundle savedInstanceState) > >>> { > > >>> setRetainInstance(true); > >>> view = inflater.inflate(R.layout.tab_film_info, container, > >>> false); > > >>> return view; > >>> } > > >>> /* > >>> @Override > >>> public void onSaveInstanceState(Bundle outState) { > >>> super.onSaveInstanceState(outState); > > >>> }*/ > > >>> @Override > >>> public void onCreate(Bundle savedInstanceState) { > >>> super.onCreate(savedInstanceState); > > >>> act = (Detail) getActivity(); > > >>> } > > >>> @Override > >>> public void onActivityCreated(Bundle savedInstanceState) { > >>> super.onActivityCreated(savedInstanceState); > >>> new DownloadFilmDetailAsyncTask().execute(); > > >>> } > > >>> private class DownloadFilmDetailAsyncTask extends AsyncTask<Void, > >>> DetailedRec, Void> > >>> { > > >>> @Override > >>> protected void onPreExecute() { > > >>> super.onPreExecute(); > > >>> } > > >>> @Override > >>> protected void onPostExecute(Void result) { > > >>> super.onPostExecute(result); > > >>> ProgressBar prBar = > >>> (ProgressBar)getView().findViewById(R.id.progressbar_film); > >>> prBar.setVisibility(View.GONE); > >>> ScrollView lay = > >>> (ScrollView)getView().findViewById(R.id.tab_filmsummary); > >>> lay.setVisibility(View.VISIBLE); > > >>> } > > >>> @Override > >>> protected Void doInBackground(Void... params) > >>> { > >>> try > >>> { > > >>> String locale = > >>> getResources().getConfiguration().locale.getDisplayName(); > > >>> JSONObject objSend = new JSONObject(); > >>> objSend.put("idFilm", act.getIdFilm()); > >>> objSend.put("cinemaId",act.getIdCinema()); > >>> int ind = locale.indexOf("("); > >>> String locale_send = locale.substring(0, ind-1); > >>> objSend.put("locale", locale_send); > >>> ArrayList<String> otherCin = new > >>> ArrayList<String>(Arrays.asList(act.getOtherCinemas())); > >>> JSONArray othCin = new JSONArray(otherCin); > >>> objSend.put("otherCinemas", othCin ); > >>> JSONObject jsonObject = > >>> sendAndGetJSONObject(JSON_SERVER+"JsonServer?op=getFilmbyId",objSend); > > >>> DetailedRec detail_rec = new DetailedRec(); > >>> //FILM > >>> detail_rec.setFilmId(jsonObject.getString("filmId")); > >>> detail_rec.setName(jsonObject.getString("name")); > > >>> detail_rec.setImageUrl(jsonObject.getString("imageUrl").replace("640", > >>> "80")); > >>> detail_rec.setActors(jsonObject.getString("actors")); > >>> detail_rec.setGenre(jsonObject.getString("genre")); > > >>> detail_rec.setDirector(jsonObject.getString("director")); > >>> detail_rec.setPlot(jsonObject.getString("plot")); > >>> detail_rec.setYear(jsonObject.getString("year")); > > >>> detail_rec.setDuration(jsonObject.getString("duration")); > > >>> detail_rec.setTrailer(jsonObject.getString("trailer")); > >>> detail_rec.setRating(jsonObject.getString("rating")); > > >>> detail_film = detail_rec; > >>> publishProgress(detail_rec); > > >>> } > >>> catch (IOException ignored) > >>> { > >>> } > >>> catch (JSONException ignored) > >>> { > >>> } > >>> return null; > >>> } > > >>> @Override > >>> protected void onProgressUpdate(DetailedRec... > > ... > > read more » -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

