2013-07-12 41 views
16

Tôi biết rằng điều này đã được hỏi trước, nhưng tôi không hiểu cách thực hiện nó. Tôi có một mảnh "myFragment" trong đó tôi tạo một đối tượng của một "myDialogueFragment". Tôi muốn chuyển một số giá trị cho myDialogueFragment khi tôi gọi nó từ myFragment. Tôi có một số nguyên num, mà tôi muốn chuyển đến myDialogueFragment và lưu số đó trong cơ sở dữ liệu cục bộ cùng với một số thông tin khác từ myDialogueFragment.Cách chuyển dữ liệu từ một đoạn đến hộp thoạiFragment

Tôi có thể bị nhầm lẫn, nhưng tất cả mã tôi đã thấy là về gửi dữ liệu từ myDialogueFragment trở lại myFragment mà không phải là những gì tôi thực sự muốn.

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

Vì vậy, mã này nhận các đối số trong phương thức myFragment onCreate(). Tôi muốn gửi các đối số trong myFragment() và nhận chúng trong myDialogueFragment.

Làm cách nào để đạt được điều đó?

+1

Không mã của bạn đạt được chính xác những gì bạn muốn? Bạn có mNum trong DialogFragment của bạn và bạn có thể sử dụng nó trong suốt vòng đời của DialogFragment, – Karakuri

+0

num nằm trong Fragment không có trong DialogFragment, tôi muốn chuyển num trong DialogFragment và lấy nó từ đó –

+0

DialogFragment mở rộng Fragment, bạn có thể làm điều tương tự chính xác trong đó là onCreate(). – Karakuri

Trả lời

38

Những gì bạn cần là setArguments trên đoạn như sau:

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

Tất cả bạn phải làm bây giờ, là bắt những lập luận trong đoạn của bạn và sử dụng chúng ...

VÀ TRONG DIALOG Fragment BẠN đỌC nó như thế này ...

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

chờ đợi, tôi cần phải đọc các đối số bên trong đối thoại, không phải bên trong Miếng? Nó sẽ là thủ tục tương tự? –

+0

Bạn cần phải đọc dữ liệu trong DialogFragment, bạn đang chuyển dữ liệu trong Fragment, và đọc nó trong DialogFragment ... –

+0

cảm ơn bạn rất nhiều: d – Ayoub

0

tôi gọi một FragmentDialog bên trong một calsswhich exdented để 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"); 

và tôi gọi nó trên onActivityCreated trong lớp học của tôi mà mở rộng đến 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ş 

    } 

công trình khá tốt

Các vấn đề liên quan