0

J'essaye de mettre à jour certaines vues qui placent dans un fragment ViewPager dans un fragment, et chaque fois que j'utilise findViewById, je suis de retour à zéro. J'ai essayé plusieurs des solutions que je trouve ici (stack overflow) et rien n'aide.findViewById retourne toujours null en utilisant FragmentStatePagerAdapter

ici est tout le code:

activity_main.xml

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

MainActivity.java:

PageManager _pageManager; 
ViewPager _viewPager; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    _viewPager = (ViewPager) findViewById(R.id.viewpager); 
    _pageManager = new PageManager(getSupportFragmentManager()); 
    _viewPager.setAdapter(_pageManager); 
    _imageView=(ImageView)findViewById(R.id.PictureBox); 

PageManager.java

public class PageManager extends FragmentStatePagerAdapter { 

    final int NUMBER_OF_PAGES = 3; 

    public PageManager(android.support.v4.app.FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return new CountdownPage(); 
      case 1: 
       return new VideosPage(); 
      case 2: 
       return new SeasonSummary(); 
      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     return NUMBER_OF_PAGES; 
    } 
} 

CountdownPage.java

public class CountdownPage extends Fragment { 
    int resId=0; 
    ImageView _imageView; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     if (container==null) 
      ShowMessage.GetInstance(null).ShowMessage("error","container"); 

     return inflater.inflate(R.layout.countdown_page,container,false); 
    } 


} 

countdown_page.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:background="@color/Black" 
      android:layout_width="match_parent" 
      android:id="@+id/countdownLayout" 
      android:layout_height="match_parent"> 


<TextView 
     style="@style/HeaderStyle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Countdown" 
     android:gravity="center" 
     android:id="@+id/CountdownHeader" 
/> 

<ImageView 
     android:layout_width="320dp" 
     android:layout_height="320dp" 
     android:id="@+id/PictureBox" 
     android:layout_gravity="center" 
     android:layout_marginTop="30dp" 
     android:onClick="testF" 
/> 

<TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="30dp" 
     android:id="@+id/counterTextView" 
     android:gravity="center" 
     android:textColor="#FFFF" 
/> 


</LinearLayout> 

Je suis en train de résoudre ce pendant des heures Merci beaucoup, Ou Yaacov

+0

Pouvons-nous voir stacktrace? –

+2

Vous devez utiliser findViewById pour l'affichage de l'image dans un fragment comme: View view = inflater.inflate (R.layout.countdown_page, container, false); _imageView = (ImageView) view.findViewById (R.id.PictureBox); – Keshav1234

+0

donc je peux je trouver juste l'image? J'obtiens maintenant ce que j'ai fait mais je ne peux toujours pas penser à une solution –

Répondre

0

Votre ImageView (id est PictureBox) est dans le 'countdown_page' layout xml non 'activity_main' layout xml, Donc vous ne devriez pas obtenir ImageView par findViewbyId (int) dans la méthode 'onCreate()' dans Activity, ImageView appartient au fragment CountdownPage.