在我的应用程序中,我有一个选择器控件(在 fragment 中),当用户单击它时,一个新的菜单 Activity 将显示一些项目列表,当用户单击任何项目时,该 Activity 将完成并且界面应传输所选项目字符串再次在 fragment 中选择器,
这是我的菜单 Activity :
public class Menu extends AppCompatActivity {
ListView listView;
public interface ItemListener {
void getItem(String s);
}
ItemListener itemListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
// Error Goes Here
itemListener = (ItemListener) this;
// Define and fill the list view
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
itemListener.getItem("Some Item");
finish();
}
});
}
}
还有我的 fragment :
public class Addorder extends Fragment implements Menu.ItemListener {
Picker picker;
public Addorder() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_addorder, container, false);
picker = (Picker) view.findViewById(R.id.picker);
return view;
}
@Override
public void getItem(String s) {
picker.setChosenItem(s);
}
}
但是我遇到了转换错误:
Caused by: java.lang.ClassCastException: Menu cannot be cast to Menu$ItemListener
我错了,任何帮助将不胜感激
最佳答案
在我看来,监听器是无用的。在 Addorder
中,您应该使用 startActivityForResult()
打开菜单 Activity 。在 Menu
中设置结果后,您将在 fragment 的 onActivityResult
回调中收到它。这是如何操作的示例:How to manage startActivityForResult on Android?
关于android - 使用接口(interface)将数据从 Activity 传递到 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54202296/