我有两个活动和两个片段:detialActivity和detialActivityFragment,mainActivity和mainActivityFragment。 我如何在detialActivityFragment和mainActivityFragment之间传递数据。 当我尝试传递数据时显示异常:java.lang.NullPointerException 我制作了界面:
public interface OnButtonPressListener {
public void onButtonPressed(String msg);
}
内部类mainActivityFragment:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
buttonListener = (OnButtonPressListener) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must
implement onButtonPressed");
}
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_main, container,
false);
listMovie = (GridView) root.findViewById(R.id.gridview_movie);
listMovie.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
buttonListener.onButtonPressed("hi");
}
});
return root;
}
内部类detialActivityFragment:
void setMessage(String msg){
TextView txt=(TextView)root.findViewById(R.id.titleDetialMovie);
txt.setText(msg);
}
内部类detialActivity:
@Override
public void onButtonPressed(String msg) {
DetialActivityFragment Obj=(DetialActivityFragment)
getSupportFragmentManager().findFragmentById(R.id.detialActivityFragment);
Obj.setMessage(msg);
}
答案 0 :(得分:1)
你不应该这样调用方法。 而是将数据传递给Fragment的构造函数并在那里使用它。
答案 1 :(得分:0)
它几乎就像活动之间传递的数据一样。从mainActivity传递包中的字符串值并在detailedActivity中获取相同内容并将它们发送到detailedFragment以显示名称。
答案 2 :(得分:0)
为了在两个fragments
之间传递数据,您应该使用Bundle
,请参阅Google文档以获取更多信息。
Fragment-A:----
Bundle bundle= new Bundle();
bundle.putString("Key",thevalue);
fragment.setArguments(bundle);
Fragment-B:----
Bundle bundle=getArguments();
String value=bundle.getString("key");
这是做什么的粗略例子。