2017-07-20 2 views
1

EDIT:Comment ajouter une fonction dans le fragment

Je suis nouveau dans Android et j'essaie d'utiliser des fragments dans mon application. J'essaie d'utiliser une fonction de fragment dans mon activité, mais je suis une exception de pointeur nul ..

Fragment:

public class VideoviewFragment extends Fragment { 

private View card; 

public static VideoviewFragment create() { 
    return new VideoviewFragment(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_videoview, container, false); 
    card = (View) view.findViewById(R.id.card_video); 
    return view; 
} 

public void setalphacard(float value){ 
    card.setAlpha(value); 
} 

} 

Dans l'activité principale que je veux faire que par exemple (i simplifié mon code):

public class MainActivity extends AppCompatActivity { 

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


    // Viewpager 
    final SmartFragmentStatePagerAdapter adapterViewPager; 
    final ViewPager viewPager = (ViewPager) findViewById(R.id.am_view_pager); 
    adapterViewPager = new MainPagerAdapter(getSupportFragmentManager()); 
    viewPager.setAdapter(adapterViewPager); 

    final VideoviewFragment videoviewFragment = (VideoviewFragment) adapterViewPager.getRegisteredFragment(2); 
    videoviewFragment.setalphacard(0.3f); 

} 
} 

adaptateur téléavertisseur principal:

public class MainPagerAdapter extends SmartFragmentStatePagerAdapter { 


public MainPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position){ 

     case 0: 
      return CameraFragment.create(); 
     case 1: 
      return OptionFragment.create(); 
     case 2: 
      return VideoviewFragment.create(); 
    } 

    return null; 
} 

@Override 
public int getCount() { 
    return 3; 
} 
} 
+1

vous devez déclarer l'objet (carte) de vue globalement dans le fragment –

Répondre

1

Il vous suffit de déclarer la View globalement comme ceci:

public class VideoviewFragment extends Fragment { 

private View card; 

public static VideoviewFragment create() { 
    return new VideoviewFragment(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_videoview, container, false); 
    card = (View) view.findViewById(R.id.card_video); 
    return view; 
} 

public void setalphacard(float value){ 
    card.setAlpha(value); 
} 

} 
+0

Merci mais j'ai essayé ceci, et j'ai obtenu une null pointeur excpetion dans l'activité principale quand j'essaye d'employer cette fonction. – falary

0

Déclarez globalement votre objet View dans votre fragment.