Java 无法将MainActivity转换为接口
我正在尝试使用接口在片段之间共享变量。我的问题是我遇到了以下错误:Java 无法将MainActivity转换为接口,java,android,interface,Java,Android,Interface,我正在尝试使用接口在片段之间共享变量。我的问题是我遇到了以下错误:java.lang.ClassCastException:com.example.application.activities.main无法将活动强制转换为com.example.application.ListGeneratedInterface 以下是我的片段的一部分: public class MealsFragment extends Fragment { View view; EditText numb
java.lang.ClassCastException:com.example.application.activities.main无法将活动强制转换为com.example.application.ListGeneratedInterface
以下是我的片段的一部分:
public class MealsFragment extends Fragment {
View view;
EditText numberText;
public ListMealsInterface listMealsInterface;
public ListGeneratedInterface listGeneratedInterface;
ArrayList<Meal> listMeals = new ArrayList<Meal>();
ArrayList<Meal> generatedList = new ArrayList<Meal>();
private static final String PREFS = "PREFS";
SharedPreferences sharedPreferences;
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.meals_fragment, container, false);
numberText = (EditText) view.findViewById(R.id.number_meals);
listMealsInterface = (ListMealsInterface)getContext();
listMeals = listMealsInterface.getList();
//The error comes from here
listGeneratedInterface = (ListGeneratedInterface)getContext();
generatedList = listGeneratedInterface.getListGenerated();
Button generateButton = view.findViewById(R.id.generate_list_button);
generateButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
if(getNumberMeals() <= maxSavedMeals() ) {
closeKeyboard(view);
saveNumberInSP();
resetIsPresent();
loadFragment(new ListGeneratedFragment());
}
else {
Toast.makeText(getContext(), getString(R.string.number_meals_over_limit), Toast.LENGTH_SHORT);
}
}
});
loadFragment(new ListGeneratedFragment());
return view;
}
}
公共类MealsFragment扩展片段{
视图;
编辑文本编号文本;
公共ListMeasInterface ListMeasInterface;
公共列表生成接口列表生成接口;
ArrayList ListFinds=新的ArrayList();
ArrayList generatedList=新建ArrayList();
私有静态最终字符串PREFS=“PREFS”;
SharedReferences SharedReferences;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.U碎片,容器,假);
numberText=(EditText)view.findViewById(R.id.number\u);
ListMealInterface=(ListMealInterface)getContext();
listMealsInterface.getList();
//错误来自这里
listGeneratedInterface=(listGeneratedInterface)getContext();
generatedList=listGeneratedInterface.getListGenerated();
Button generateButton=view.findViewById(R.id.generate_列表_按钮);
generateButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(getNumberMeals()是实现该接口的MainActivity?不,不是,因为我要共享的变量是在另一个片段中创建和定义的。您能否精确指定变量的类型?并给它们一个更精确的名称,因为“我要共享的变量是在哪里创建的,它只返回变量。”litlle是否不清楚。变量是否总是一样的?我的变量是ArrayList generatedList
。它是在片段a中创建的,但我需要在另一个片段中使用它。为此,我创建了ListGeneratedInterface,它是定义的(使用@Override)在片段A中。但是当我尝试在上面的片段中使用它时,我得到了我发布的错误。我认为问题来自使用getContext()
,因为MainActivity没有实现ListGeneratedInterface(正如片段A中定义的generatedList)。您可以看到我在上面的代码中成功地实现了ListMealInterface,这是在MainActivity中实现的
package com.example.application;
import java.util.ArrayList;
public interface ListGeneratedInterface {
public ArrayList<Meal> getListGenerated();
}