কোড দ্বারা একটি খণ্ড ট্যাগ সেট কিভাবে?


137

আমি ক্লাসে setTag(String tagName)পদ্ধতির মতো কিছু পাই না FragmentFragmentআমি খুঁজে পেয়েছি এমন একটি ট্যাগ সেট করার একমাত্র উপায় হ'ল FragmentTransactionপরামিতি হিসাবে কোনও ট্যাগের নামটি পাস করে।

Fragmentকোড দ্বারা স্পষ্টভাবে কোনও ট্যাগ সেট করার একমাত্র উপায় এটি ?

উত্তর:


118

হ্যাঁ. তাই একমাত্র উপায় লেনদেনের সময়ে, যেমন ব্যবহার add, replace, অথবা লেআউট অংশ হিসেবে।

আমি সামঞ্জস্যতার উত্সগুলির একটি পরীক্ষার মাধ্যমে এটি নির্ধারণ করেছি কারণ আমি সংক্ষেপে অতীতের কোনও সময়ে অনুরূপ সন্ধান করেছি।


2
আপনার উত্তরটি [এখানে] [1] স্ট্যাকওভারফ্লো পোস্টে রয়েছে [1]: স্ট্যাকওভারফ্লো
এসএমই

2
এখানে বর্ণিত হিসাবে ফ্রেগমেন্ট ট্রান্সজেকশনের অ্যাড ( ইন্টি ধারকভিউআইডি , টুকরো টুকরো টুকরো স্ট্রিং ট্যাগ) ব্যবহার করুন: stackoverflow.com/a/13244471/4002895 @ পিজেএল দয়া করে আপনার উত্তরটি সম্পাদনা করুন hisএই উত্তর বিভ্রান্তিকর লোকদের
দাসার

এটি বেশ অসুবিধাজনক।
ইয়ান ওয়াম্বাই

75

আপনি এভাবে খণ্ডে ট্যাগ সেট করতে পারেন:

Fragment fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
    .replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG")
    .addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit(); 

7
আমি এই কোডটি কোথায় ব্যবহার করব? ফ্র্যাগমেন্টপেজারএডাপ্টারে গেম আইটেমে?
ডাঃ জ্যাকি

35

আপনি আপনার ক্রিয়াকলাপের লেআউট এক্সএমএল ফাইলের মধ্যে একটি ট্যাগ সরবরাহ করতে পারেন।

android:tag attributeএকটি অনন্য স্ট্রিং সঙ্গে সরবরাহ সরবরাহ করুন ।

আপনি যেমন একটি লেআউট এক্সএমএল একটি আইডি বরাদ্দ করবেন।

    android:tag="unique_tag"

বিকাশকারী গাইডের লিঙ্ক


32
যদি কোনও লেআউট ফাইল ব্যবহার করে তবে এটি কাজ করবে। তবে এই প্রশ্নটি জাভায় গতিশীলভাবে ট্যাগটি সেট করতে বোঝায়।
ইগোরগানাপলস্কি

1
আমার এই উত্তরটির প্রয়োজন ছিল কারণ কখনও কখনও কিছু লাইব্রেরি ব্যবহার করার সময় খণ্ডের লেনদেনের উপর আপনার নিয়ন্ত্রণ থাকে না যাতে আপনি প্রোগ্রামটিমে ট্যাগটি সেট করতে না পারেন। ধন্যবাদ!
আরজেফারেস

3

আপনি এই জাতীয় সমস্ত টুকরোগুলি পেতে পারেন:

ভি 4 টুকরা জন্য

List<Fragment> allFragments = getSupportFragmentManager().getFragments();

অ্যাপ.ফ্রেগমেন্টের জন্য

List<Fragment> allFragments = getFragmentManager().getFragments();

0

এটি আমি খুঁজে পেয়েছি সেরা উপায়:

   public class MainActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState == null) {
          // Let's first dynamically add a fragment into a frame container
          getSupportFragmentManager().beginTransaction(). 
              replace(R.id.flContainer, new DemoFragment(), "SOMETAG").
              commit();
          // Now later we can lookup the fragment by tag
          DemoFragment fragmentDemo = (DemoFragment) 
              getSupportFragmentManager().findFragmentByTag("SOMETAG");
        }
    }
}

-1

আমি জানি এটি 6 বছর আগে হয়েছে তবে কেউ যদি একই সমস্যার মুখোমুখি হয় তবে আমি যেমন করেছি:

Fragmentএকটি ট্যাগ ক্ষেত্র সহ একটি কাস্টম ক্লাস তৈরি করুন :

public class MyFragment extends Fragment {
 private String _myTag;
 public void setMyTag(String value)
 {
   if("".equals(value))
     return;
   _myTag = value;
 }
 //other code goes here
}

সেগমেন্টে খণ্ড যুক্ত করার আগে ঠিক তেমন sectionPagerAdapterট্যাগ:

 MyFragment mfrag= new MyFragment();
 mfrag.setMyTag("TAG_GOES_HERE");
 sectionPagerAdapter.AddFragment(mfrag);


-22

আপনি Fragmentযুক্তি হিসাবে সম্পত্তি হিসাবে ট্যাগ যুক্ত করতে পারেন । এটি খণ্ডটি ধ্বংস হয়ে গেলে ওএস দ্বারা পুনরায় তৈরি করা হলে এটি স্বয়ংক্রিয়ভাবে পুনরুদ্ধার হবে ।

উদাহরণ : -

    final Bundle args = new Bundle();
    args.putString("TAG", "my tag");
    fragment.setArguments(args);

তুমি যা বলতে চাচ্ছ আমি তা পেয়েছি ধন্যবাদ!
devherMLuna

তুমি কি পেলে?! লম্বা শট না দিয়ে আপনি কীভাবে ফ্রেগমেন্টের জন্য ট্যাগ সেট করেছেন তা নয়
ফরিদ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.