android - 如何在 fragment 中添加函数

标签 android fragment

编辑:

我是 android 的新手,我尝试在我的应用程序中使用 fragment 。我尝试在我的 Activity 中使用 fragment 函数,但出现空指针异常。

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);
}

}

例如,在主要 Activity 中我想这样做(我简化了我的代码):

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);

}
}

主寻呼机适配器:

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;
}
}

最佳答案

您只需像这样全局声明View:

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);
}

}

关于android - 如何在 fragment 中添加函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45211104/

相关文章:

android - 如何知道ListView的最后一行是否显示完整?

android - 检测绕Y轴的旋转 Android Java

android - 将自定义类传递给 Fragment

android - 关于 fragment 生命周期的困惑

java - 如何在 android 中检查 URL 的可用性

java - Android Fragment OnAttach方法

Android EditText 值到整数

android - 如何实现Android Fragment Transaction .add语法错误

android - 带有旋转 fragment 的 ActionBar 选项卡

android - 来自 xml 的 ListFragment 布局