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

EDIT:

Когда вы объявляете свой PagerAdapter в своей деятельности, от попытаться получить ссылку адаптера от него, что-то вроде ниже

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

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

adapter_Viewpager adapter = new adapter_Viewpager(); и адаптер.getAdapter не имеют findViewById – user1411084

0

ViewPager наследует findViewById() из поля зрения, так что вы не можете просто сделать следующее: (. (TextView) getAdapter() findViewById (R.id.textvvvv)).

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