2012-03-07 3 views
1

Я могу отправить свои данные из Activity1 в Activity2 с типичной ..Как отправить объект Parcelable в DialogFragment?

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

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

ответ

3

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

0

Используйте 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"; 
    } 
} 
+0

Просьба предоставить какой-то контент вокруг ссылки. Другими словами, дайте ответ на вопрос, используя ссылку только как ссылку для более полного лечения * вашего ответа. Причина этого в SO - на всякий случай, когда ссылка идет плохо. Если это произойдет в случае этого ответа, будущим пользователям SO нечего будет продолжать. –

Смежные вопросы