Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将fragment和AppCompatActivity扩展到同一个类?_Java_Android_Xml_Android Fragments_Inheritance - Fatal编程技术网

Java 如何将fragment和AppCompatActivity扩展到同一个类?

Java 如何将fragment和AppCompatActivity扩展到同一个类?,java,android,xml,android-fragments,inheritance,Java,Android,Xml,Android Fragments,Inheritance,我有一个类。我将Fragment扩展到这个类,因为我在开发导航抽屉时使用了Fragment 代码如下 public class aboutSLFragment extends Fragment { public aboutSLFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup containe

我有一个类。我将Fragment扩展到这个类,因为我在开发导航抽屉时使用了Fragment

代码如下

public class aboutSLFragment extends Fragment  {

public aboutSLFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_about_sl, container, false);
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    //you can set the title for your toolbar here for different fragments different titles
    getActivity().setTitle("About Sri Lanka");
}

}
现在我想给这个类添加一个图像滑块

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    viewPager = (ViewPager) findViewById(R.id.viewPager);

    sliderDotspanel = (LinearLayout) findViewById(R.id.SliderDots);

    ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this);

    viewPager.setAdapter(viewPagerAdapter);

    dotscount = viewPagerAdapter.getCount();
    dots = new ImageView[dotscount];

    for(int i = 0; i < dotscount; i++){

        dots[i] = new ImageView(this);
        dots[i].setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.non_active_dot));

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        params.setMargins(8, 0, 8, 0);

        sliderDotspanel.addView(dots[i], params);

    }

    dots[0].setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.active_dot));

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

            for(int i = 0; i< dotscount; i++){
                dots[i].setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.non_active_dot));
            }

            dots[position].setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.active_dot));

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

}
正如我所知,我们不能继承两个类。那么我应该如何解决它呢?请帮帮我?如果有人修改我的代码,我们将不胜感激

我已经在aboutSLFragment.java中添加了一个图像滑块,但是有一些错误我无法修复。我是android新手,所以请有人告诉我如何修复这些错误。我已将错误加粗

public class aboutSLFragment extends Fragment{

ViewPager viewPager;
LinearLayout sliderDotspanel;
private int dotscount;
private ImageView[] dots;


public aboutSLFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    viewPager = (ViewPager) **findViewById**(R.id.viewPager);

    sliderDotspanel = (LinearLayout) **findViewById**(R.id.SliderDots);

    ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(**this**);

    viewPager.setAdapter(viewPagerAdapter);

    dotscount = viewPagerAdapter.getCount();
    dots = new ImageView[dotscount];

    for(int i = 0; i < dotscount; i++){

        dots[i] = new ImageView(**this**);
        dots[i].setImageDrawable(ContextCompat.getDrawable(**getApplicationContext()**, R.drawable.non_active_dot));

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        params.setMargins(8, 0, 8, 0);

        sliderDotspanel.addView(dots[i], params);

    }

    dots[0].setImageDrawable(ContextCompat.getDrawable(**getApplicationContext()**, R.drawable.active_dot));

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

            for(int i = 0; i< dotscount; i++){
                dots[i].setImageDrawable(ContextCompat.getDrawable(**getApplicationContext()**, R.drawable.non_active_dot));
            }

            dots[position].setImageDrawable(ContextCompat.getDrawable(**getApplicationContext()**, R.drawable.active_dot));

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_about_sl, container, false);
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    //you can set the title for your toolbar here for different fragments different titles
    getActivity().setTitle("About Sri Lanka");
}
public类aboutSLFragment扩展了Fragment{
查看页面查看页面;
线性布局滑道;
私人互联网公司;
私有图像视图[]点;
公众关于碎片(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
viewPager=(viewPager)**findViewById**(R.id.viewPager);
sliderDotspanel=(线性布局)**findViewById**(R.id.SliderDots);
ViewPagerAdapter ViewPagerAdapter=新ViewPagerAdapter(**此**);
viewPager.setAdapter(viewPagerAdapter);
dotscont=viewPagerAdapter.getCount();
dots=新图像视图[DOTSCONT];
for(int i=0;i

}我已更改了您的代码。问题是:

  • findViewById()
    。活动已具有
    findViewById()
    方法,因此您可以在活动中调用它。但是
    Fragment
    没有这个方法。在
    Fragment
    中,您必须通过
    View.findViewById()
    方法找到一个视图,这里
    View
    将是您在
    onCreateView()中膨胀的视图
  • 新建ViewPagerAdapter(此)
    。要创建视图,必须提供活动上下文。在这里,您传递的是
    this
    它是您的片段实例,而不是活动上下文
  • ContextCompat.getDrawable()
    此方法还接受上下文<代码>getApplicationContext()
    在片段中不可用。您必须从片段中调用
    getActivity()
    getContext()
    ,以获取活动的上下文

    public class aboutSLFragment extends Fragment{
    
    ViewPager viewPager;
    LinearLayout sliderDotspanel;
    private int dotscount;
    private ImageView[] dots;
    
    public aboutSLFragment() {
      // Required empty public constructor
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    
    View rootView = inflater.inflate(R.layout.fragment_about_sl, container, false);
    viewPager = (ViewPager) rootView .findViewById(R.id.viewPager);
    
    sliderDotspanel = (LinearLayout)rootView.findViewById(R.id.SliderDots);
    
    ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getContext());
    
    viewPager.setAdapter(viewPagerAdapter);
    
    dotscount = viewPagerAdapter.getCount();
    dots = new ImageView[dotscount];
    
    for(int i = 0; i < dotscount; i++){
    
        dots[i] = new ImageView(getContext());
        dots[i].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.non_active_dot));
    
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    
        params.setMargins(8, 0, 8, 0);
    
        sliderDotspanel.addView(dots[i], params);
    
    }
    
    dots[0].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.active_dot));
    
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
        }
    
        @Override
        public void onPageSelected(int position) {
    
            for(int i = 0; i< dotscount; i++){
                dots[i].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.non_active_dot));
            }
    
            dots[position].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.active_dot));
    
        }
    
        @Override
        public void onPageScrollStateChanged(int state) {
    
        }
    });
    
     // Inflate the layout for this fragment
     return rootView;
    }
    
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
      super.onViewCreated(view, savedInstanceState);
      //you can set the title for your toolbar here for different fragments different titles
      getActivity().setTitle("About Sri Lanka");
     }
    
    }
    
    public类aboutSLFragment扩展了Fragment{
    查看页面查看页面;
    线性布局滑道;
    私人互联网公司;
    私有图像视图[]点;
    公众关于碎片(){
    //必需的空公共构造函数
    }
    @凌驾
    创建视图上的公共视图(布局、充气机、视图组容器、,
    Bundle savedInstanceState){
    视图根视图=充气机。充气(R.layout.fragment\u about\u sl,container,false);
    viewPager=(viewPager)rootView.findViewById(R.id.viewPager);
    sliderDotspanel=(LinearLayout)rootView.findViewById(R.id.SliderDots);
    ViewPagerAdapter ViewPagerAdapter=新的ViewPagerAdapter(getContext());
    viewPager.setAdapter(viewPagerAdapter);
    dotscont=viewPagerAdapter.getCount();
    dots=新图像视图[DOTSCONT];
    for(int i=0;ipublic class aboutSLFragment extends Fragment{
    
    ViewPager viewPager;
    LinearLayout sliderDotspanel;
    private int dotscount;
    private ImageView[] dots;
    
    
    public aboutSLFragment() {
        // Required empty public constructor
    }
    
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    
        viewPager = (ViewPager) **findViewById**(R.id.viewPager);
    
        sliderDotspanel = (LinearLayout) **findViewById**(R.id.SliderDots);
    
        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(**this**);
    
        viewPager.setAdapter(viewPagerAdapter);
    
        dotscount = viewPagerAdapter.getCount();
        dots = new ImageView[dotscount];
    
        for(int i = 0; i < dotscount; i++){
    
            dots[i] = new ImageView(**this**);
            dots[i].setImageDrawable(ContextCompat.getDrawable(**getApplicationContext()**, R.drawable.non_active_dot));
    
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    
            params.setMargins(8, 0, 8, 0);
    
            sliderDotspanel.addView(dots[i], params);
    
        }
    
        dots[0].setImageDrawable(ContextCompat.getDrawable(**getApplicationContext()**, R.drawable.active_dot));
    
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
            }
    
            @Override
            public void onPageSelected(int position) {
    
                for(int i = 0; i< dotscount; i++){
                    dots[i].setImageDrawable(ContextCompat.getDrawable(**getApplicationContext()**, R.drawable.non_active_dot));
                }
    
                dots[position].setImageDrawable(ContextCompat.getDrawable(**getApplicationContext()**, R.drawable.active_dot));
    
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
    
            }
        });
    
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_about_sl, container, false);
    }
    
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //you can set the title for your toolbar here for different fragments different titles
        getActivity().setTitle("About Sri Lanka");
    }
    
    public class aboutSLFragment extends Fragment{
    
    ViewPager viewPager;
    LinearLayout sliderDotspanel;
    private int dotscount;
    private ImageView[] dots;
    
    public aboutSLFragment() {
      // Required empty public constructor
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    
    View rootView = inflater.inflate(R.layout.fragment_about_sl, container, false);
    viewPager = (ViewPager) rootView .findViewById(R.id.viewPager);
    
    sliderDotspanel = (LinearLayout)rootView.findViewById(R.id.SliderDots);
    
    ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getContext());
    
    viewPager.setAdapter(viewPagerAdapter);
    
    dotscount = viewPagerAdapter.getCount();
    dots = new ImageView[dotscount];
    
    for(int i = 0; i < dotscount; i++){
    
        dots[i] = new ImageView(getContext());
        dots[i].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.non_active_dot));
    
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    
        params.setMargins(8, 0, 8, 0);
    
        sliderDotspanel.addView(dots[i], params);
    
    }
    
    dots[0].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.active_dot));
    
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
        }
    
        @Override
        public void onPageSelected(int position) {
    
            for(int i = 0; i< dotscount; i++){
                dots[i].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.non_active_dot));
            }
    
            dots[position].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.active_dot));
    
        }
    
        @Override
        public void onPageScrollStateChanged(int state) {
    
        }
    });
    
     // Inflate the layout for this fragment
     return rootView;
    }
    
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
      super.onViewCreated(view, savedInstanceState);
      //you can set the title for your toolbar here for different fragments different titles
      getActivity().setTitle("About Sri Lanka");
     }
    
    }