2013-07-12 7 views
16

So che questo è stato chiesto prima, ma non capisco come implementarlo. Ho un frammento "myFragment" in cui creo un oggetto di "myDialogueFragment". Voglio passare qualche valore a myDialogueFragment quando lo invoco da myFragment. Ho un numero intero, che voglio passare a myDialogueFragment e archiviare quel numero in un database locale insieme ad altre informazioni da myDialogueFragment.Come passare i dati da un frammento a una finestra di dialogo Frammento

Potrei sbagliarmi, ma tutto il codice che ho visto riguarda l'invio di dati da myDialogueFragment al myFragment che non è quello che voglio veramente.

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"); 
    ... 
} 

Quindi, questo codice ottiene gli argomenti all'interno del metodo myFragment onCreate(). Voglio inviare gli argomenti all'interno di myFragment() e riceverli in myDialogueFragment.

Come posso ottenere quello?

+1

Non il vostro codice di ottenere esattamente quello che vuoi? Hai mNum nel tuo DialogFragment e puoi usarlo per tutta la durata del DialogFragment, – Karakuri

+0

il num è nel Frammento non nel DialogFragment, voglio passare il numero nel DialogFragment e recuperarlo da lì –

+0

DialogFragment estende Fragment, tu può fare esattamente la stessa cosa in it's onCreate(). – Karakuri

risposta

38

Quello che vi serve è quello di setArguments sul frammento come segue:

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

Tutto quello che dovete fare ora, è prendere tali argomenti nel frammento e li usa ...

E NEL DIALOGO FRAMMENTO lo si legge come questa ...

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

wait, ho bisogno di leggere gli argomenti all'interno di DialogueFragment, non all'interno del Frammento? Sarà la stessa procedura? –

+0

Hai bisogno di leggere i dati nel DialogFragment, stai passando i dati nel Frammento, e leggerlo nel DialogFragment ... –

+0

grazie mille: d – Ayoub

0

io chiamo un FragmentDialog all'interno di un calsswhich exdented per ActivityFragment

012.
//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"); 

e ho chiamato l'onActivityCreated nella mia classe che ha esteso a 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ş 

    } 

opere piuttosto bene