Прошу помочь кодом и объяснениями, то есть на моём примере и тыкнуть пальцем, что куда и как.
Как передать данные из DialogFragment в обычную activity, которая вызывала этот диалог?
В обратную сторону с помощью setArguments в activity и getArguments в DialogFragment. А как вытащить данные из DialogFragment? В моём случае нужно вытащить значение NumberPicker'a
MainActivity
...
public class MainActivity extends ActionBarActivity {
DialogFragment dlg1;
DialogFragment dlg2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv=(TextView)findViewById(R.id.t_v);
dlg1 = new dialog1();
dlg2 = new dialog2();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnDlg1:
dlg1.show(getFragmentManager(), "dlg1");
break;
case R.id.btnDlg2:
dlg2.show(getFragmentManager(), "dlg2");
break;
default:
break;
}
}
}
public class dialog1 extends DialogFragment implements OnClickListener {
final String LOG_TAG = "myLogs";
String num;
Integer numm;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getDialog().setTitle("Title!");
View v = inflater.inflate(R.layout.dialog1, null);
TextView tv= (TextView)v.findViewById(R.id.textView1);
NumberPicker np= (NumberPicker)v.findViewById(R.id.n_p);
v.findViewById(R.id.btnYes).setOnClickListener(this);
v.findViewById(R.id.btnNo).setOnClickListener(this);
v.findViewById(R.id.btnMaybe).setOnClickListener(this);
tv.setText("");
np.setMinValue(50);
np.setMaxValue(100);
num = getArguments().getString("index");
tv.setText(num);
numm=np.getValue();
return v;
}
public static interface OnCompleteListener {
public abstract void onComplete(String time);
}
private OnCompleteListener mListener;
// make sure the Activity implemented it
public void onAttach(Activity activity) {
try {
this.mListener = (OnCompleteListener)activity;
}
catch (final ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnCompleteListener");
}
}
public void onClick(View v) {
Log.d(LOG_TAG, "Dialog 1: " + ((Button) v).getText());
Bundle args = new Bundle();
setArguments(args);
dismiss();
}
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
Log.d(LOG_TAG, "Dialog 1: onDismiss");
}
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
Log.d(LOG_TAG, "Dialog 1: onCancel");
}