免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
android – 在tabs開關(guān)中保存片段狀態(tài)

這是一個星期我試圖解決這個問題成功.請幫我.

我使用帶有viewpager的標簽導航.這是我放置標簽和FragmentPagerAdapter類的類:

 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) {         }     }}

3個片段類都是一樣的,我這里只復制一個;
在片段類中我使用異步任務來下載我需要放在視圖中的數(shù)據(jù),我在onActivityCreated方法中執(zhí)行此操作:

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... values)        {            for (final DetailedRec detail_rec : values)            {                updateViews(detail_rec);            }        }        private  JSONObject getJSONObject(String url) throws IOException, MalformedURLException, JSONException        {            HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();            InputStream in = conn.getInputStream();            try            {                StringBuilder sb = new StringBuilder();                BufferedReader r = new BufferedReader(new InputStreamReader(new DoneHandlerInputStream(in),"WINDOWS_1252"));                for (String line = r.readLine(); line != null; line = r.readLine())                {                    sb.append(line);                }                return new JSONObject(sb.toString());            }            finally            {                in.close();            }        }        private  JSONObject sendAndGetJSONObject(String url,JSONObject request) throws IOException, MalformedURLException, JSONException        {            HttpClient client = new DefaultHttpClient();            HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit            InputStream in=null;            try{                 HttpPost post = new HttpPost(url);                 StringEntity se = new StringEntity(request.toString());                   se.setContentType((Header) new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));                 post.setEntity(se);                 HttpResponse response = client.execute(post);                 HttpEntity entity = response.getEntity();                 in = entity.getContent();                 StringBuilder sb = new StringBuilder();                 BufferedReader r = new BufferedReader(new InputStreamReader(new DoneHandlerInputStream(in),"WINDOWS_1252"));                 for (String line = r.readLine(); line != null; line = r.readLine())                 {                    sb.append(line);                 }                 return new JSONObject(sb.toString());            }catch(Exception e){            }            finally            {                in.close();            }            return null;        }    }    private void updateViews(final DetailedRec detail_rec){        //FILM        TextView filmName = (TextView) getView().findViewById(R.id.movieTitle);        filmName.setText(detail_rec.getName().trim());        TextView actors = (TextView) getView().findViewById(R.id.movieActor);        actors.setText(detail_rec.getActors().trim());        TextView genre = (TextView) getView().findViewById(R.id.movieGenre);        genre.setText(detail_rec.getGenre().trim());        TextView director = (TextView) getView().findViewById(R.id.movieDirector);        director.setText(detail_rec.getDirector().trim());        TextView plot = (TextView) getView().findViewById(R.id.moviePlot);        plot.setText(detail_rec.getPlot().trim());        TextView year = (TextView) getView().findViewById(R.id.movieYear);        year.setText(detail_rec.getYear().trim());        TextView duration = (TextView) getView().findViewById(R.id.movieDuration);        duration.setText(detail_rec.getDuration().trim());        ImageView image = (ImageView) getView().findViewById(R.id.moviePoster);        new DownloadImagesTask(detail_rec.getImageUrl().trim().replace("80", "100")).execute(image);        //image.setImageBitmap(downloadBitmap(detail_rec.getImageUrl().trim().replace("80", "100")));        //Rating        if(detail_rec.getRating().compareTo("N/A")!=0){            RatingBar rateBar = (RatingBar)getView().findViewById(R.id.MovieRatingBar);            rateBar.setRating(Float.parseFloat(detail_rec.getRating()));        }        //Trailer         Button trailer = (Button)getView().findViewById(R.id.trailer);        if(detail_rec.getTrailer().compareTo("")!=0){            trailer.setVisibility(View.VISIBLE);            trailer.setOnClickListener(new OnClickListener() {                @Override                public void onClick(View v) {                    int index = detail_rec.getTrailer().indexOf("v=");                    String videoId="";                    if(index!=-1){                        videoId = detail_rec.getTrailer().substring(index 2); //"Fee5vbFLYM4";                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" videoId));                         intent.putExtra("VIDEO_ID", videoId);                         startActivity(intent);                     }                }            });        }    }}

好的,在我的應用程序中,我希望片段加載一次.我解釋得這么好:
當我啟動Detail類時,片段類是istantiate并且所有3個片段中的AsyncTask開始,現(xiàn)在當用戶從一個選項卡切換到另一個選項卡時我希望未選中選項卡中的片段不會丟失數(shù)據(jù)和視圖,因為現(xiàn)在當我從一個選項卡切換到另一個選項卡,然后返回第一個重新創(chuàng)建的選項卡,再次調(diào)用onActivityCreated方法!

請幫助我,我在所有地方搜索,但我沒有找到解決方案!

附:我使用SherlockActionBar,我不知道id是否相關(guān).對不起,我的英語不好

謝謝

解決方法:

在實例化ViewPager之后,添加它

mViewPager = (ViewPager)findViewById(R.id.pager);mViewPager.setOffscreenPageLimit(3);

應該這樣做!

來源:https://www.icode9.com/content-4-355651.html
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android ListView使用BaseAdapter與ListView的優(yōu)化
Android應用中使用ViewPager和ViewPager指示器來制作Tab標簽
用SurfaceView和MediaPlayer做一個Android視頻播放器
刻骨銘心的startActivityForResult三級跳獲得第三個Activity中返回的數(shù)據(jù)
Intent.ACTION_BATTERY_CHANGED——檢測手機電量情況_夏天的風—...
手把手教你如何搭建一個自己的安卓快速開發(fā)框架之BaseActivity(一)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服