2012-11-16 3 views
0

내 안드로이드 응용 프로그램에서 3 개의 Fragments.A, B, C.가 있습니다. B-> C-> A와 같이 스 와이프하면 onViewCreated 메서드가 조각 A에서 호출되므로 응용 프로그램이 느려집니다.이 작업을 중단하고 싶습니다. onViewCreated 페이지 스 와이프에서 호출되었습니다. Mainactivity 사전에 created.Thanks을 때 우리는 어떻게 나만이 나 자신을 해결viewpager를 스 와이프 할 때 onViewCreated를 방지하는 방법은 무엇입니까?

주요 활동 =>

public class MainActivity extends FragmentActivity { 

    private ViewPager mViewPager; 

    private ProgressDialog pd; 
    Button settings; 
    static TextView flashnews; 
    public static int stopflag=0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 


     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Headlines.parse(); 


     SharedPreferences mlmprf = getSharedPreferences("malayalam", MODE_PRIVATE); 
     final SharedPreferences.Editor mlmedit = mlmprf.edit(); 

     if(mlmprf.getBoolean("enable", true)) 
    { 
     Headlines.headflag="malayalam"; 
    } 
    else 
    { 
     Headlines.headflag="english"; 
    } 





     flashnews=(TextView)findViewById(R.id.flashs); 
     flashnews.setSelected(true); 
     flashnews.setEllipsize(TruncateAt.MARQUEE); 
     flashnews.setHorizontallyScrolling(true); 
     flashnews.setSingleLine(true); 
     flashnews.setLines(1); 


     ; 




       PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById(R.id.pager_title_strip); 
     pagerTabStrip.setDrawFullUnderline(true); 
     pagerTabStrip.setTabIndicatorColor(Color.rgb(174, 1, 34)); 



     // We get UI references 
     mViewPager = (ViewPager) findViewById(R.id.viewpager); 
     mViewPager.setAdapter(new MyAdapter(this)); 
    } 
private class MyAdapter extends FragmentPagerAdapter{ 
private Context mContext; 
     private String[] frags = {A.class.getName(), B.class.getName(),C.class.getName()}; 

     public MyAdapter(FragmentActivity activity) { 
      super(activity.getSupportFragmentManager()); 
      mContext = activity; 
     } 



     @Override 
     public Fragment getItem(int pos) { 
      return Fragment.instantiate(mContext, frags[pos]); 
     } 

     @Override 
     public int getCount() { 
      return frags.length; 
     } 

     @Override 
     public CharSequence getPageTitle(int pos) { 

      if(pos==0) 
      return "A"; 

      if(pos==1) 
      return "B"; 

      if(pos==2) 
      return "C"; 

      else 
      return null; 


     } 

    } 
} 

조각 A =>

public class A extends Fragment{ 


    public static String urls; 
    // XML node keys 
    static final String KEY_HEAD = "item"; // parent node 
    //static final String KEY_TITLE = "title"; 
    static final String KEY_DATE = "pubDate"; 
    public static String headflag="english"; 
    public static String[] Title; 
    public static String[] Description; 
    public static String[] Tit; 
    public static String[] Tit2; 
    public static String[] Desc; 
    public static String[] Desc2; 
    public static String[] image; 
    int f=0; 
    GridView list; 
    HeadlinesAdapter adapter; 
    private TextView mMessageView; 
    private Button mClearButton; 
    public ArrayList<HashMap<String, String>> newsList; 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflating layout 
     View v = inflater.inflate(R.layout.headlines_fragment, container, false); 
     // We obtain layout references 

     return v; 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     // We set clear listener 


     if(Headlines.headflag=="malayalam") 
     { 
      urls="http://www.abc.com/rssfeeds/19_18_17_25/1/rss.xml"; 


     } 

     if(Headlines.headflag=="english") 
     { 
      urls="http://www.abc.com/en/rssfeeds/1_2_3_5/latest/rss.xml"; 


     } 



     parse(); 
     populate_listview();  
    } 


    public void populate_listview() 
    { 


     newsList = new ArrayList<HashMap<String, String>>(); 

     XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(urls); // getting XML from URL 
     Document doc = parser.getDomElement(xml); // getting DOM element 

     NodeList nl = doc.getElementsByTagName(KEY_HEAD); 
     // looping through all song nodes <song> 
     NodeList itemLst = doc.getElementsByTagName("item"); 
     String MarqueeStr=""; 

     for (int i = 0; i < nl.getLength(); i++) { 
      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 
      Element e = (Element) nl.item(i); 
      newsList.add(map); 
      //MarqueeStr = MarqueeStr +" *** "+ Title[i]; 


    } 

     list=(GridView)getActivity().findViewById(R.id.grid); 

     // Getting adapter by passing xml data ArrayList 
       adapter=new HeadlinesAdapter(getActivity(), newsList);   
       list.setAdapter(adapter); 



    } 

    public void parse() 
    { 

      URL url; 

      try { 

       url = new URL(urls); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       if((conn.getResponseCode() == HttpURLConnection.HTTP_OK)){ 
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
         DocumentBuilder db = dbf.newDocumentBuilder(); 
         Document doc; 
         doc = db.parse(url.openStream()); 
         doc.getDocumentElement().normalize(); 

         NodeList itemLst = doc.getElementsByTagName("item"); 
         Description = new String[itemLst.getLength()];//........ 
         Title = new String[itemLst.getLength()]; 
         Tit=new String[itemLst.getLength()]; 
         Tit2=new String[itemLst.getLength()]; 
         Desc=new String[itemLst.getLength()]; 
         Desc2=new String[itemLst.getLength()]; 
         image= new String[itemLst.getLength()]; 

         for(int i=0; i < itemLst.getLength(); i++){ 

          Node item = itemLst.item(i); 
          if(item.getNodeType() == Node.ELEMENT_NODE){ 
            Element ielem = (Element)item; 
            NodeList title = ielem.getElementsByTagName("title"); 
            NodeList date = ielem.getElementsByTagName("pubDate"); 
            NodeList description = ielem.getElementsByTagName("description"); 
            Tit[i]= title.item(0).getChildNodes().item(0).getNodeValue(); 
            Desc[i]= description.item(0).getChildNodes().item(0).getNodeValue(); 
            Tit2[i]=Translate.title(Tit[i]); 
            Desc2[i]=Translate.description(Desc[i]); 
            if(Headlines.headflag=="malayalam") 
            { 
             Desc2[i]=Desc2[i].replace("read more","IqSpXÂ"); 
            } 
            Title[i] =Tit2[i]; 
            if (Desc2[i].contains("<img ")){ 
             String img = Desc2[i].substring(Desc2[i].indexOf("<img ")); 
             String cleanUp = img.substring(0, img.indexOf(">")+1); 
             img = img.substring(img.indexOf("src=") + 5); 
             int indexOf = img.indexOf("'"); 
             if (indexOf==-1){ 
              indexOf = img.indexOf("\""); 
             } 
             img = img.substring(0, indexOf); 

           //setImgLink(img); 
            if(Headlines.headflag=="malayalam") 
            { 
             String img2=img.replace("files","files/imagecache/android_320"); 
             Description[i]=Desc2[i].replace(img,img2); 
             image[i]=img2; 
            } 

           else 
           { 
            String img2=img.replace("files","files/imagecache/android_1_img"); 
            Description[i]=Desc2[i].replace(img,img2); 
            image[i]=img2; 
           } 
            } 
           else 
           { 
            Description[i] =Desc2[i]; 
           } 



          } 

          } 

         } 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (DOMException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (ParserConfigurationException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (SAXException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
    } 





} 

답변

1

.. 한 번에 호출되는 onViewCreated 할 수 있습니다 viewPager.setOffscreenPageLimit (3) ...

+0

을 입력하여이 질문을 닫습니다. 사소한 것이라면 삭제하십시오. –

관련 문제