Tôi đang cố gắng gửi một số dữ liệu từ dialogfragment
đến mục tiêu fragment
nhưng không hoạt động.Gọi lại DialogFragment đến Phân đoạn mục tiêu bằng giao diện
Tôi đã viết đoạn code sau, nhưng nó thông qua exception
:
java.lang.NullPointerException: Attempt to invoke interface method 'void com.x.x.FragmentAlertDialog$Communicator.setI(java.lang.String)' on a null object reference
Code:
public class FragmentAlertDialog extends DialogFragment {
Communicator callback;
public interface Communicator {
void setI(String name);
}
public static FragmentAlertDialog newInstance(String id, int title, int items) {
FragmentAlertDialog frag = new FragmentAlertDialog();
Bundle args = new Bundle();
args.putString("id", id);
args.putInt("title", title);
args.putInt("items", items);
frag.setArguments(args);
return frag;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
callback = (Communicator) getTargetFragment();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
String id = getArguments().getString("id");
int title = getArguments().getInt("title");
String[] items = getResources().getStringArray(getArguments().getInt("items"));
switch (id) {
case MainActivity.DIALOG_1:
return new AlertDialog.Builder(getActivity())
.setTitle(title)
.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
callback.setI("Important Data");
}
}).create();
}
return null;
}
Fragment Lớp
public class FragmentXYXY extends Fragment implements View.OnClickListener, FragmentAlertDialog.Communicator {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.et_i:
DialogFragment newFragment = FragmentAlertDialog.newInstance(MainActivity.DIALOG_I, R.string.i_select, R.array.i_array);
newFragment.setTargetFragment(this, 0);
newFragment.show(getFragmentManager(), "dialog");
}
}
@Override
public void setI(String name) {
textI.setText(name);
}
thể ai xin vui lòng giúp đỡ. Cảm ơn bạn
Mã Modified- newFragment.setTargetFragment (this, 0);
liều getTargetFragment(); phương pháp nào? –
một phương pháp xây dựng trong phương pháp, tôi đang cố gắng lấy đoạn mà hộp thoại được tạo ra – ThunderRoid