2012-06-05 213 views
0

我想在片段一個TextView更改文本片段,我可以很容易地在instantiateItem做到這一點,但instantiateItem後,TextView的是空,我不能爲什麼不工作

MyPagerAdapter.textView.SetText調用() ;

private class MyPagerAdapter extends PagerAdapter { 


     TextView textView; 

     public int getCount() { 
      return 5; 
     } 

     public Object instantiateItem(View collection, int position) { 

      LayoutInflater inflater = (LayoutInflater) collection.getContext() 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      int resId = 0; 
      switch (position) { 
      case 0: 
       resId = R.layout.farleft; 
       View view = inflater.inflate(resId, null); 
       ((ViewPager) collection).addView(view, 0); 
       textView = (TextView)view.findviewById(R.id.textvvvv); 
       return view; 

      case 1: 
       resId = R.layout.left; 
       break; 
      case 2: 
       resId = R.layout.middle; 
       break; 
      case 3: 
       resId = R.layout.right; 
       break; 
      case 4: 
       resId = R.layout.farright; 
       break; 
      } 


     } 

     @Override 
     public void destroyItem(View arg0, int arg1, Object arg2) { 
      ((ViewPager) arg0).removeView((View) arg2); 

     } 

     @Override 
     public boolean isViewFromObject(View arg0, Object arg1) { 
      return arg0 == ((View) arg1); 

     } 

     @Override 
     public Parcelable saveState() { 
      return null; 
     } 
} 

但是,該starnge在這裏當我改變文本instantiateItem與

textView.SetText("EEE"); 

它工作得很好,但我不能MyPageAdapter外更改文本,爲什麼呢?

+0

你試過setTextView( 「EEE」) – Sana

+0

adapter_Viewpager adapter = new adapter_Viewpager();和adapter.getAdapter沒有findViewById ... – user1411084

回答

0

MyPagerAdapter不是static並且您的訪問方法將用於靜態類。嘗試實例化PagerAdapter和使用該引用調用getAdapter()方法,並嘗試使用findViewById(....)

編輯找到的觀點:

當您在活動聲明你PagerAdapter,從嘗試獲得參考從它的適配器,類似下面

PagerAdapter viewer = (PagerAdapter) findViewById(R.id.pageradapter); - >

viewer.getAdapter().findViewById(...) 
+0

adapter_Viewpager adapter = new adapter_Viewpager();而adapter.getAdapter沒有findViewById – user1411084

0

ViewPager繼承查看findViewById(),這樣你就不能這樣做:((的TextView)getAdapter()findViewById(R.id.textvvvv))。

TextView textView = (TextView) viewPager.findViewById(...);