Android 需要Appcompat活动作为片段中使用的函数的参数

Android 需要Appcompat活动作为片段中使用的函数的参数,android,android-fragments,android-appcompat,Android,Android Fragments,Android Appcompat,我正在应用程序中使用外部库。示例中使用的第一个参数是“this”。指的是appcompat活动。然而,我在片段中使用它,shich显然没有扩展appcompat活动 这是图书馆: 我不确定我是否能做些什么。我可以将片段扩展到兼容的东西吗(现在它只是扩展片段) 以下是该问题的屏幕截图: 编辑: 这是我在主要活动中扩展的内容: public class MainActivity extends AppCompatActivity implements View.OnClickListener {

我正在应用程序中使用外部库。示例中使用的第一个参数是“this”。指的是appcompat活动。然而,我在片段中使用它,shich显然没有扩展appcompat活动

这是图书馆:

我不确定我是否能做些什么。我可以将片段扩展到兼容的东西吗(现在它只是扩展片段)

以下是该问题的屏幕截图:

编辑:

这是我在主要活动中扩展的内容:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
称为innside主活动的片段扩展如下:

public class AddAlarmFragment extends Fragment {
   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
       // Inflate the layout for this fragment
       View view = inflater.inflate(R.layout.fragment_add_alarm, container, false);


        WeekdaysDataSource wds = new WeekdaysDataSource(, R.id.weekdays_stub)
                .start(this);



        new WeekdaysDataSource.Callback() {
            @Override
            public void onWeekdaysItemClicked(int attachId,WeekdaysDataItem item) {
                // Do something if today is selected?
                Calendar calendar = Calendar.getInstance();
                if(item.getCalendarDayId()==calendar.get(Calendar.DAY_OF_WEEK)&&item.isSelected())
                    Toast.makeText(getActivity(),"Carpe diem",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onWeekdaysSelected(int attachId,ArrayList<WeekdaysDataItem> items) {
                //Filter on the attached id if there is multiple weekdays data sources
                if(attachId==R.id.weekdays_stub){
                    // Do something on week 4?
                }
            }

        };
我尝试在片段的oncreate方法中创建数据源,如下所示:

public class AddAlarmFragment extends Fragment {
   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
       // Inflate the layout for this fragment
       View view = inflater.inflate(R.layout.fragment_add_alarm, container, false);


        WeekdaysDataSource wds = new WeekdaysDataSource(, R.id.weekdays_stub)
                .start(this);



        new WeekdaysDataSource.Callback() {
            @Override
            public void onWeekdaysItemClicked(int attachId,WeekdaysDataItem item) {
                // Do something if today is selected?
                Calendar calendar = Calendar.getInstance();
                if(item.getCalendarDayId()==calendar.get(Calendar.DAY_OF_WEEK)&&item.isSelected())
                    Toast.makeText(getActivity(),"Carpe diem",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onWeekdaysSelected(int attachId,ArrayList<WeekdaysDataItem> items) {
                //Filter on the attached id if there is multiple weekdays data sources
                if(attachId==R.id.weekdays_stub){
                    // Do something on week 4?
                }
            }

        };
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u add\u报警,容器,错误);
WeekdaysDataSource wds=新的WeekdaysDataSource(,R.id.weekdays_存根)
.启动(本);
新建WeekdaysDataSource.Callback(){
@凌驾
WeekdaySiteMcClicked上的公共无效(int附件,WeekdaysDaitem项){
//如果选择了“今天”,您会做些什么?
日历=Calendar.getInstance();
if(item.getCalendarDayId()==calendar.get(calendar.DAY,OF,OF,OF,OF,WEEK)&&item.isSelected())
Toast.makeText(getActivity(),“Carpe diem”,Toast.LENGTH_SHORT.show();
}
@凌驾
已选择“工作日公共作废”(int attachId,ArrayList项){
//如果存在多个工作日数据源,则根据附加的id进行筛选
if(attachId==R.id.weekdays\u存根){
//在第四周做些什么?
}
}
};

提前感谢您的帮助。

您是否尝试过强制转换
getActivity()

阅读Android API,您可以看到AppCompatActivity确实扩展了FragmentActivity,
getActivity()
确实返回了FragmentActivity,而不是库所期望的AppCompatActivity


我确实觉得很奇怪,AppCompatActivity甚至是定义的参数而不是上下文

您是否尝试过强制转换
getActivity()

阅读Android API,您可以看到AppCompatActivity确实扩展了FragmentActivity,
getActivity()
确实返回了FragmentActivity,而不是库所期望的AppCompatActivity


我确实觉得很奇怪,AppCompatActivity甚至是定义的参数而不是上下文

试试你的activity。用这个代替这个你的activity扩展了哪个activity?activity还是AppCompactActivity?你试过用
getActivity()
代替这个吗?试试getActivity()代替此@NicholasMuirtry YourActivity。代替此您的活动扩展了哪个活动?活动或AppCompactActivity?是否尝试使用
getActivity()
代替此?尝试getActivity()而不是这个@NicholasMuir@criket非常感谢!解决了它。这是我第一次看到这样的东西。感谢你的帮助。没问题。这只是Java多态性的一个怪癖,有时会让人困惑times@criket非常感谢!解决了。这是我第一次看到这样的事情。谢谢你的帮助。没问题。这只是Java多态性中的一个怪癖,有时会令人困惑