কিভাবে খণ্ডগুলিতে সেটআর্গমেন্টস () এবং গেটআরগমেন্টস () পদ্ধতি ব্যবহার করবেন?


99

আমার 2 টি টুকরো রয়েছে: (1) ফ্রেগ 1 (2) ফ্রেগ 2।

ফ্রেগ 1

bundl = new Bundle();
bundl.putStringArrayList("elist", eList);

Frag2 dv = new Frag2();
dv.setArguments(bundl);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.the_fragg,dv);
ft.show(getFragmentManager().findFragmentById(R.id.the_fragg)); 
ft.addToBackStack(null);
ft.commit();

আমি কীভাবে এই ডেটা ফ্রেগ 2 এ পাব?

উত্তর:



192

শুধু কল getArguments()আপনার Frag2'র onCreateView()পদ্ধতি:

public class Frag2 extends Fragment {

     public View onCreateView(LayoutInflater inflater,
         ViewGroup containerObject,
         Bundle savedInstanceState){
         //here is your arguments
         Bundle bundle=getArguments(); 

        //here is your list array 
        String[] myStrings=bundle.getStringArray("elist");   
     }
}

12
এটি আমার ক্ষেত্রে শূন্য হয়ে ফিরে আসছে, কোনও ধারণা কেন এমন হচ্ছে?
অনিরুধ

4
আপনি বান্ডলে অ্যারেলিস্ট লাগিয়ে দিচ্ছেন , তবে একটি স্ট্রিং অ্যারে পাচ্ছেন। আপনার করা উচিতbundle.getStringArrayList("elist");
রাফাł

4
আপনি ফেরতের বিবৃতিটি ভুলে গেছেন:return super.onCreateView(inflater, container, savedInstanceState);
ব্যবহারকারীর 41805

4
সার্বক্ষণিক কল করে অনক্রিয়েটভিউ। সুতরাং অনক্রিয়েট () পদ্ধতিতে কেবল getarguments কল করুন। এটি কেবল তখন কল করবে যখন খণ্ডটি ধ্বংস হয়ে যাবে বা নতুন নির্মিত সময় হবে।
মোহাম্মদ ইব্রাহিম

5
@almaz_from_kazan @HabeebPerwad কেন আপনি ব্যবহার করছেন getArguments() মধ্যে onCreateView, নেই onCreate?
নিক কোবার

40

উদাহরণস্বরূপ: ডেটা যুক্ত করুন: -

   Bundle bundle = new Bundle();
   bundle.putString("latitude", latitude);
   bundle.putString("longitude", longitude);
   bundle.putString("board_id", board_id);
   MapFragment mapFragment = new MapFragment();
   mapFragment.setArguments(bundle);

যেমন: ডেটা পান: -

String latitude =  getArguments().getString("latitude")

7

ফ্রেগ 1 এ:

Bundle b = new Bundle();

b.putStringArray("arrayname that use to retrive in frag2",StringArrayObject);

Frag2.setArguments(b);

ফ্রেগ 2 এ:

Bundle b = getArguments();

String[] stringArray = b.getStringArray("arrayname that passed in frag1");

এটা খুব সহজ।


5

সঠিকভাবে খণ্ডটি ইনস্ট্যান্ট করছে!

getArguments() setArguments()স্থিতিশীল পদ্ধতি ব্যবহার করে কোনও খণ্ডকে ইনস্ট্যান্ট করার ক্ষেত্রে পদ্ধতিগুলি খুব কার্যকর বলে মনে হয়।
অর্থাত্Myfragment.createInstance(String msg)

এটা কিভাবে করতে হবে?

টুকরা কোড

public MyFragment extends Fragment {

    private String displayMsg;
    private TextView text;

    public static MyFragment createInstance(String displayMsg)
    {
        MyFragment fragment = new MyFragment();
        Bundle args = new Bundle();
        args.setString("KEY",displayMsg);
        fragment.setArguments(args);           //set
        return fragment;
    }

    @Override
    public void onCreate(Bundle bundle)
    {
        displayMsg = getArguments().getString("KEY"):    // get 
    }

    @Override
    public View onCreateView(LayoutInlater inflater, ViewGroup parent, Bundle bundle){
        View view = inflater.inflate(R.id.placeholder,parent,false);
        text = (TextView)view.findViewById(R.id.myTextView);
        text.setText(displayMsg)    // show msg
        returm view;
   }

}

ধরা যাক আপনি ইনস্ট্যান্স তৈরি করার সময় একটি স্ট্রিং পাস করতে চান। এইভাবে আপনি এটি করবেন।

MyFragment.createInstance("This String will be shown in textView");

আরও পড়ুন

1) নতুন মাইফ্রেগমেন্টের (স্ট্রিং নাম্বার) তুলনায় মাইফ্রেগমেন্ট.জেটআইনস্ট্যান্স (স্ট্রিং msg ) কেন পছন্দ করা হয়?
2) টুকরাগুলিতে নমুনা কোড


android.os.Bundle এর সেটস্ট্রিং নেই। আপনি কি অর্থ রেখেছেন?
স্টিলথ রাব্বি

2

আমার মতো যারা আদিমগুলি বাদে অন্য কোনও জিনিস প্রেরণ করতে চাইছেন, যেহেতু আপনি আপনার খণ্ডে প্যারামিটারাইজড কনস্ট্রাক্টর তৈরি করতে পারবেন না, কেবল আপনার খণ্ডে একটি সেটার অ্যাকসেসর যুক্ত করুন, এটি সর্বদা আমার পক্ষে কাজ করে।


এটি একটি ভুল উপায়। যদি কোনও খণ্ড পুনরায় তৈরি করা হয় তবে এটি সেই পরামিতিগুলি হারাবে। টুকরা পাঠানো পরামিতি serializable হওয়া উচিত, মাধ্যমে গৃহীত setArguments()। ননসিরিয়ালেজযোগ্য প্যারামিটারগুলি সেটারের সাথে সেট করা যেতে পারে, তবে এটি আবার ক্রিয়াকলাপ / খণ্ড পুনরায় তৈরি করা উচিত।
কুলমাইন্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.