2012-06-09 35 views
5

Tôi có thể lưu trữ giá trị trong một biến bây giờ tôi muốn chuyển biến đó thành phân đoạn.Cách chuyển dữ liệu giữa hoạt động sang phân đoạn bằng ý định trong Android

Với mã sau tôi có thể tải các đoạn.

public class AndroidListFragmentActivity extends Activity { 
Fragment2 f2; 
public static String itemname; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.apetiserfragement); 
    itemname=getIntent().getStringExtra("itemname"); 
    Bundle args=new Bundle(); 
    args.putString("itemname", itemname); 
    f2=new Fragment2(); 
    f2.setArguments(args); 

} 
} 

(Ở đây tôi tải đoạn sử dụng trang XML) itemname

Sản lượng được chia thành thành 2 cửa sổ một cho mở rộng cho listfragment (đối với listview). Một cho mảnh

Fragment2.xml

public class Fragment2 extends Fragment { 
String itemname; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    System.out.println(getArguments().getString("itemname")); 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

} 

    } 

AndroidListFragmentActivity trong lớp này itemname Tôi muốn vượt qua Fragment2.class.

+0

Chính xác thì vấn đề của bạn là gì? Vui lòng mô tả điều gì sẽ xảy ra khi bạn chạy mã của mình? Bạn có mắc lỗi gì không? Nếu vậy, đăng logcat? Nếu hành vi không khác với những gì bạn muốn? –

+0

Ngoài ra, hãy đăng bố cục XML của bạn. –

Trả lời

5

Sử dụng các gói được cung cấp tại một trong những fragment constructors, và sau đó bạn sẽ có thể lấy lại Bundle bằng cách làm ngay nơi bạn muốn đến trong onCreateView()

Ví dụ:

YourFragment.instantiate(context,"fragName",yourBundleWithValue); 

Sau đó, trong mảnh của bạn:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    getArguments().getStringValue("name"); //Returns your string value 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 
+1

vui lòng cung cấp mã mẫu cho tôi – naveen

+0

Xong. Bạn cần phải khởi tạo Fragment của bạn hoặc bằng cách sử dụng phương pháp này, hoặc bằng cách cung cấp constructor tĩnh của riêng bạn (mặc dù sau này là điều cấm kỵ). – hwrdprkns

+0

i được lưu trữ itemname giá trị trong lớp này AndroidListFragmentActivity .please xem mycode thay đổi mã theo mã của tôi bởi vì tôi mới hơn của fragments.please giúp tôi YourFragment.instantiate (context, "fragName", yourBundleWithValue); thay đổi dòng có thể theo mã của tôi. – naveen

-1

Bạn cần sử dụng FragmentManager để hiển thị cho bạn r Fragment.

+1

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. – infused

+0

@infused Đây là một vấn đề XY. OP đã sử dụng 'setArguments()' và 'getArguments()', vì vậy lý do anh ta không nhìn thấy đoạn được hiển thị là bởi vì anh ta không sử dụng 'FragmentManager' để hiển thị nó. –

+0

@infused Và tôi chỉ nhận thấy rằng câu hỏi này là hai tuổi ... –

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