I have 2 fragment consist of FeedFragment
(Fragment) which will transfer the string to Transfer
(Fragment). I am using interface to transfer it.
FeedFragment
public class FeedFragment extends Fragment {
public interface OnInputSelected{
void sendInput(String input);
}
public OnInputSelected mOnInputSelected;
private TextView feed;
private TextView bt;
private String input;
public FeedFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_feed, container, false);
feed= view.findViewById(R.id.feed);
bt= view.findViewById(R.id.bt);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
input=feed.getText().toString();
mOnInputSelected.sendInput(input);
}
});
// Inflate the layout for this fragment
return view;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mOnInputSelected = (FeedFragment.OnInputSelected) getTargetFragment();
} catch (ClassCastException e) {
Log.e(TAG, "onAttach: ClassCastException : " + e.getMessage());
}
}
}
Transfer
public class Transfer extends Fragment implements FeedFragment.OnInputSelected{
public TextView transfer;
@Override
public void sendInput(String input) {
transfer.setText(input);
}
public Transfer() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_transfer, container, false);
// Inflate the layout for this fragment
transfer= view.findViewById(R.id.transfer);
return view;
}
}
Error
Attempt to invoke interface method 'void com.shrikanthravi.customnavigationdrawer.FeedFragment$OnInputSelected.sendInput(java.lang.String)' on a null object reference at com.shrikanthravi.customnavigationdrawer.FeedFragment$1.onClick(FeedFragment.java:49)