• Как передать данные из DialogFragment в вызвавшую его activity?

    @evgeniyleventsov Автор вопроса
    Итак, рабочий numPicker в DialogFragment, огромное спасибо, VYakushev! ещё да, надо с ООП доразобраться и с JAVA в принципе, но хочется на практике это делать)

    MainActivity
    public class MainActivity extends ActionBarActivity implements dialog1.OnCompleteListener{
        DialogFragment dlg1;
        DialogFragment dlg2;
        TextView tv;
        String nn;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            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;
            }
    
        }
    
        @Override
        public void onComplete(int time) {
            nn = String.valueOf(time);
            tv.setText(nn);
    
        }
    }


    Dialog1.java
    public class dialog1 extends DialogFragment implements OnClickListener {
    
        final String LOG_TAG = "myLogs";
        NumberPicker np;
        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);
            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);
    
            return v;
        }
    
        public static interface OnCompleteListener {
            public abstract void onComplete(int 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");
            }
            super.onAttach(activity);
        }
    
        public void onClick(View v) {
            numm=np.getValue();
            Log.d(LOG_TAG, "Dialog 1: " + ((Button) v).getText());
            Log.d(LOG_TAG, "numm=np.getValue()="+numm);
            mListener.onComplete(numm);
    
            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");
        }
    }
  • Как передать данные из DialogFragment в вызвавшую его activity?

    @evgeniyleventsov Автор вопроса
    ошибка в dialog фрагменте. "уточнил" в вопросе ошибку и код диалога. Что это значит? Нужно вызвать через super? super.onAttach(); ? где-зачем? пытался дописать в viod onAttach, но аргументы просит..
  • Как передать данные из DialogFragment в вызвавшую его activity?

    @evgeniyleventsov Автор вопроса
    FATAL EXCEPTION: main
        Process: com.name.myapplication4.app, PID: 1203
        android.util.SuperNotCalledException: Fragment dialog1{b3d62060 #0 dlg1} did not call through to super.onAttach()


    package com.shuhermayer.myapplication4.app;
    
    
            import android.annotation.TargetApi;
            import android.app.Activity;
            import android.app.DialogFragment;
            import android.content.DialogInterface;
            import android.os.Build;
            import android.os.Bundle;
            import android.util.Log;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.View.OnClickListener;
            import android.view.ViewGroup;
            import android.widget.Button;
            import android.widget.NumberPicker;
            import android.widget.TextView;
            import android.widget.TimePicker;
    
            import org.w3c.dom.Text;
    
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    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(int 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());
            Log.d(LOG_TAG, "numm=np.getValue()="+numm);
            mListener.onComplete(numm);
    
            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");
        }
    }
  • Как передать данные из DialogFragment в вызвавшую его activity?

    @evgeniyleventsov Автор вопроса
    совсем недавно начал изучать программирование под андроид и java как таковую, а можно ли как-нибудь прописать "у активити, что она реализует метод onCompleteListener" другим способом нежели
    "public class MainActivity extends ActionBarActivity implements dialog1.OnCompleteListener{"?