http://pastebin.com/p9FCCMX1I正在尝试通过活动将数据从一个片段发送到另一个片段。可以将数据从GroupFragment发送到ChatActivity(id包含正确的值),但是当到达时:
@Override
public void respond(String id) {
interfaceDataCommunicatorFromActivity.respond(id);
}
在我的ChatActivity中,它抛出NUllPointException,我不知道如何使其工作?
(当我只粘贴部分代码时,我试图使您更容易阅读,如果没有帮助,它会友好并纠正我!对于所有代码:“ http://pastebin.com/p9FCCMX1 ”)
ChatActivity:
public class ChatActivity extends Activity implements
GroupFragment.OnFragmentInteractionListener,
//ChatFragment.OnFragmentInteractionListener,
GroupFragment.InterfaceDataCommunicator {
public InterfaceDataCommunicatorFromActivity interfaceDataCommunicatorFromActivity;
@Override
public void respond(String id) {
interfaceDataCommunicatorFromActivity.respond(id);
}
public interface InterfaceDataCommunicatorFromActivity {
public void respond(String id);
}
}
GroupFragment:
public class GroupFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
public InterfaceDataCommunicator interfaceDataCommunicater;
...../
public void CreateNewGroup(String groupName) {
Map<String, Group> newGroup = new HashMap<>();
Firebase firebaserootRef = new Firebase("https://luminous-heat-420.firebaseio.com");
Firebase firebaseGroup = firebaserootRef.child("").push();
Group group = new Group();
group.SetID(firebaseGroup.getKey());
group.SetName(groupName);
String id = firebaseGroup.getKey();
firebaseGroup.child("id").setValue(group.GetId());
firebaseGroup.child("name").setValue(group.GetName());
newGroup.put(id, group);
interfaceDataCommunicater.respond(group.GetId());
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
try {
interfaceDataCommunicater = (InterfaceDataCommunicator) activity;
} catch (ClassCastException c) {
throw new ClassCastException(activity.toString()
+ " must implement InterfaceDataCommunicator");
}
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
public void onFragmentInteraction(Uri uri);
}
public interface InterfaceDataCommunicator{
public void respond(String id);
}
}
聊天片段:
public class ChatFragment extends Fragment implements
View.OnClickListener,
ChatActivity.InterfaceDataCommunicatorFromActivity {
public ChatActivity.InterfaceDataCommunicatorFromActivity
interfaceDataCommunicatorFromActivity;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
try {
interfaceDataCommunicatorFromActivity = (ChatActivity
.InterfaceDataCommunicatorFromActivity) activity;
} catch (ClassCastException c) {
throw new ClassCastException(activity.toString()
+ " must implement InterfaceDataCommunicator");
}
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
public void onFragmentInteraction(Uri uri);
}
@Override
public void respond(String id) {
this.groupID = id;
}
}
interfaceDataComunicatorFromActivity
您的活动中的in是无用的,并且您正在获得NPE,因为没有引用它。如果你只是希望你在你的组ID ChatFragment
,只是通过它传递setter
在你的ChangeToChatFragment()
:
public void ChangeToChatFragment(String groupId) {
ChatFragment groupFragment = ChatFragment.newInstance("", "");
groupFragment.setGroupId(groupId);
FragmentManager fM = getFragmentManager();
FragmentTransaction fT = fM.beginTransaction();
fT.replace(R.id.container_chat, groupFragment, null);
fT.addToBackStack("go to chat fragmement");
fT.commit();
}
编辑:
在您的ChatFragment
添加中:
public void setGroupId(String groupId){
this.groupId = groupId;
}
然后将您groupId
作为参数传递给ChangeToChatFragment
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句