2013-07-12 9 views
16

Wiem, że o to pytano wcześniej, ale nie bardzo rozumiem, jak to zrobić. Mam fragment "myFragment", w którym utworzę obiekt "myDialogueFragment". Chcę przekazać pewne wartości do myDialogueFragment, gdy wywołuję go z myFragment. Mam liczbę całkowitą, którą chcę przekazać do myDialogueFragment i zapisać ten numer w lokalnej bazie danych wraz z kilkoma innymi informacjami z myDialogueFragment.Jak przekazywać dane z fragmentu do okna dialogowegoFragmentacja

Mogę się mylić, ale cały kod, jaki widziałem, dotyczy wysyłania danych z myDialogueFragment z powrotem do myFragment, który nie jest tym, czego naprawdę chcę.

static MyDialogFragment newInstance(int num) { 

MyDialogFragment f = new MyDialogFragment(); 

// Supply num input as an argument. 
Bundle args = new Bundle(); 
args.putInt("num", num); 
f.setArguments(args); 

return f; 
} 

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

Ten kod pobiera argumenty z metody myFragment onCreate(). Chcę wysyłać argumenty w ramach myFragment() i odbierać je w myDialogueFragment.

Jak mogę to osiągnąć?

+1

Nie kodu osiągnąć dokładnie to, co chcesz? Masz mNum w DialogFragment i możesz go używać przez cały okres istnienia DialogFragment, – Karakuri

+0

numer jest w Fragmentie nie w DialogFragment, chcę przekazać numer w DialogFragment i pobrać go stamtąd –

+0

DialogFragment rozszerza Fragment, ty może zrobić dokładnie to samo w onCreate(). – Karakuri

Odpowiedz

38

Co potrzebne jest do setArguments na fragment następująco:

Bundle args = new Bundle(); 
args.putString("key", "value"); 
DialogFragment newFragment = new YourDialogFragment(); 
newFragment.setArguments(args); 
newFragment.show(getSupportFragmentManager(), "TAG"); 

Wszystko co musisz teraz zrobić, to złapać te argumenty w swojej fragmentu i używać ich ...

aw DIALOG FRAGMENT ZAPOZNAĆ to tak ...

Bundle mArgs = getArguments(); 
String myValue = mArgs.getString("keyUsed to send it..."); 
+0

czekaj, muszę przeczytać argumenty wewnątrz funkcji DialogueFragment, a nie wewnątrz Fragment? Czy to będzie ta sama procedura? –

+0

Musisz odczytać dane w DialogFragment, przekazujesz dane w Fragmentie i czytając je w DialogFragment ... –

+0

dziękuję bardzo: d – Ayoub

0

nazywam FragmentDialog wewnątrz calsswhich exdented do ActivityFragment

//TODO 1 
       Followers clickedObj = (Followers) 

       parent.getItemAtPosition(position); 
       Bundle bundle = new Bundle(); 
       bundle.putString("name", clickedObj.getFollow_name()); 
       bundle.putString("nick", clickedObj.getFollow_nickname()); 
       bundle.putString("score", clickedObj.getFollow_score()); 
       bundle.putString("title", clickedObj.getFollow_title()); 
       FragmentManager fragmentManager = getSupportFragmentManager(); 
       UserPopUp userPopUp = new UserPopUp(); 
       //TODO 1 
       userPopUp.setArguments(bundle); 
       userPopUp.show(fragmentManager, "followers"); 

i nazwałem go na onActivityCreated w mojej klasie, która przedłużony do DialogFragment

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     //Bundle Data Cekme başlangıç 
     Bundle mArgs = getArguments(); 
     String userName = mArgs.getString("name"); 
     String userNickName = mArgs.getString("nick"); 
     String userTitle = mArgs.getString("title"); 
     String userScore = mArgs.getString("score"); 
     user_name.setText(userName); 
     nick_name.setText(userNickName); 
     challenge_title.setText(userTitle); 
     user_score.setText(userScore); 
     // bitiş 

    } 

działa całkiem dobre

Powiązane problemy