2013-07-12 132 views
16

我知道這是之前問過的,但我不太明白如何實現它。 我有一個片段「myFragment」,其中我創建了一個「myDialogueFragment」的對象。 我想從myFragment中調用myDialogueFragment時將一些值傳遞給myDialogueFragment。 我有一個整型數字,我想傳遞給myDialogueFragment並將該數字與myDialogueFragment中的其他信息一起存儲在本地數據庫中。如何將數據從片段傳遞到對話框片段

我可能會誤解,但我所看到的所有代碼都是關於將數據從myDialogueFragment發送回myFragment,這不是我真正想要的。

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

因此,此代碼獲取myFragment onCreate()方法內的參數。我想在myFragment()中發送參數並在myDialogueFragment中接收它們。

我該如何做到這一點?

+1

不代碼實現你想要什麼叫做它onActivityCreated?您的DialogFragment中有mNum,您可以在DialogFragment的整個生命週期中使用它, – Karakuri

+0

num中的片段不在DialogFragment中,我想通過DialogFragment中的num並從那裏檢索 –

+0

DialogFragment extends Fragment,you可以在onCreate()中完成同樣的事情。 – Karakuri

回答

38

你需要的是對片段setArguments如下:

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

所有你現在要做的,就是趕上這些參數在你的片段,並用它們...

,並在DIALOG片段你讀它是這樣的...

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

等待,我需要讀取DialogueFragment內部的參數,而不是分段?這是否會是相同的程序? –

+0

您需要讀取DialogFragment中的數據,將數據傳遞給Fragment,然後在DialogFragment中讀取它... –

+0

非常感謝您:d – Ayoub

0

我叫calsswhich內FragmentDialog exdented到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"); 

和我在類擴展到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ş 

    } 

作品不錯

相關問題