2012-06-05 161 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(...);