Как отправить объект Parcelable в DialogFragment? - PullRequest
1 голос
/ 08 марта 2012

Я могу отправить свои данные от Activity1 до Activity2 с типичным ..

Intent intent = new Intent(Activity1.this, Activity2.class);
intent.putExtra("state", getIntent().getParcelableExtra("state"));
intent.putExtra("schools", temp);
startActivity(intent);

и это нормально работает, когда я на Activity2, вопрос в том, как заставить его работать от Activity1 до DialogFragment? Как отправить отправляемые объекты и получить их, когда я кодирую DialogFragment? На какой-нибудь пример вы можете указать мне?

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Я думаю , это может помочь.
В основном, используя setArguments() и позже getArguments() в диалоге onCreate().

0 голосов
/ 27 февраля 2015

Используйте Bundle для передачи объекта Parcelable вашему DialogFragment.

http://developer.android.com/reference/android/os/Bundle.html

(EDIT:)

Допустим, вам нужен TimePicker DialogFragment где-то в вашем Activity1:

// This is a static inner class which resides inside your Activity1
// so you will face this limitation :
// You can only access static method from inside this. You also can
// not remove static keyword or you will face memory leak.

public static class StartTimePickerFragment extends DialogFragment
        implements TimePickerDialog.OnTimeSetListener {

static StartTimePickerFragment newInstance (int arg, YourParcelableObj obj) {

        StartTimePickerFragment DialogFrag = new 
            StartTimePickerFragment();

        Bundle args = new Bundle();
        args.putInt("Whatever", arg);
        // for Parcelable :
        args.putParcelable ("Whatever2", obj);
        DialogFrag.setArguments(args);
        return DialogFrag;
    }

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mNum = getArguments().getInt("whatever");
}

 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

            // now here you can not directly access class methods and
            // and data members. so get the Activity object and then
            // you are good to 'set/get' them here in  your
            // DialogFragment

            Activity1 activity = (Activity1) getActivity();
            activity.your_non_static_method(hourOfDay, minute);
            activity.your_non_static_activitidy_member_Data = "whatever";
    }
}
...