我在我的应用程序中使用外部库。该示例中使用的第一个参数是“this”。这是指 appcompat 活动。但是,我在片段中使用它显然不会扩展 appcompat 活动。
这是图书馆:
https://github.com/TouchBoarder/weekdays-buttons-bar
我不确定是否有什么我可以做的。我可以将片段扩展为兼容的东西吗(现在它只是扩展片段)。
以下是问题截图:
编辑:
这是我在 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?
}
}
};
预先感谢您的帮助。
你尝试过铸造
getActivity()
吗?
((AppCompatActivity) getActivity(), R.id.weekdays_stub)
阅读 Android API,您可以看到 AppCompatActivity 确实扩展了 FragmentActivity 并且
getActivity()
确实返回 FragmentActivity,而不是 AppCompatActivity,正如您的库所期望的那样。
我确实觉得奇怪,AppCompatActivity 甚至是定义的参数而不是 Context
在 Kotlin 中,您可以使用
as
将 Activity 转换为 AppCompatActivity
例如:
`activity as AppCompatActivity`