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

问题描述 投票:0回答:2

我在我的应用程序中使用外部库。该示例中使用的第一个参数是“this”。这是指 appcompat 活动。但是,我在片段中使用它显然不会扩展 appcompat 活动。

这是图书馆:

https://github.com/TouchBoarder/weekdays-buttons-bar

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

以下是问题截图:

enter image description here

编辑:

这是我在 MainActivity 中扩展的内容:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

名为 innside Main Activity 的 Fragment 扩展如下:

public class AddAlarmFragment extends Fragment {

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

   @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?
                }
            }

        };

预先感谢您的帮助。

android android-fragments android-appcompat
2个回答
8
投票

你尝试过铸造

getActivity()
吗?

((AppCompatActivity) getActivity(), R.id.weekdays_stub) 

阅读 Android API,您可以看到 AppCompatActivity 确实扩展了 FragmentActivity 并且

getActivity()
确实返回 FragmentActivity,而不是 AppCompatActivity,正如您的库所期望的那样。

我确实觉得奇怪,AppCompatActivity 甚至是定义的参数而不是 Context


0
投票

在 Kotlin 中,您可以使用

as

将 Activity 转换为 AppCompatActivity

例如:

`activity as AppCompatActivity`
© www.soinside.com 2019 - 2024. All rights reserved.