Fragman nomini yoki idini oling

Mening kodim Activity va Fragment da bir vaqtning o'zida framelayout bor (bir xil framelayout Faoliyat ).

Mening MainActivity.class menda framelayout mening qaysi qismda ekanligini bilishim kerak. Masalan, framelayout MyFragment1.class yoki MyFragment2.class dan foydalanayotganligini bilishim kerak.

Menga shunga o'xshash narsa kerak (bu misolda log menga "MyFragment1" da ekanligingizni bildirishi kerak ):

FrameLayout frameLayout = (FrameLayout) findViewById(R.id.framelayout);

 getSupportFragmentManager().beginTransaction()
        .replace(R.id.framelayout,new MyFragment1())
        .commit();

if (framelayout.getname.equals("package.MyFragment1.class"))
 Log.d("debug", "you are in MyFragment1");
else if (framelayout.getname.equals("package.MyFragment2.class"))
 Log.d("debug", "you are in MyFragment2");

Lekin bunga qanday erishish mumkinligini bilmayman.

0
Fragman menejeri uchun teg nomlarini ko'rib chiqing
qo'shib qo'ydi muallif Eugen Martynov, manba
Fragman menejeri uchun teg nomlarini ko'rib chiqing
qo'shib qo'ydi muallif Eugen Martynov, manba
Men sizning echimingizni sinab ko'rmoqchiman, lekin u ishlamayapti (tahrirlashga qarang)
qo'shib qo'ydi muallif Jéwôm', manba
Men sizning echimingizni sinab ko'rmoqchiman, lekin u ishlamayapti (tahrirlashga qarang)
qo'shib qo'ydi muallif Jéwôm', manba
Men sizning echimingizni sinab ko'rmoqchiman, lekin u ishlamayapti (tahrirlashga qarang)
qo'shib qo'ydi muallif Jéwôm', manba
javobni tekshirib chiqdim
qo'shib qo'ydi muallif N J, manba
javobni tekshirib chiqdim
qo'shib qo'ydi muallif N J, manba
javobni tekshirib chiqdim
qo'shib qo'ydi muallif N J, manba

9 javoblar

You need to use below code to get runtime fragment from FrameLayout

    Fragment fragmentInFrame = (Fragemnt)getSupportFragmentManager()
                                             .findFragmentById(R.id.frag2_view);

exampleof yordamida fragment turini tekshiring

if (fragmentInFrame instanceof MyFragment1){

   Log.d("debug", "you are in MyFragment1");

}else if (fragmentInFrame instanceof MyFragment2){

    Log.d("debug", "you are in MyFragment2");

}
2
qo'shib qo'ydi
Men sizning echimingizni sinab ko'rmoqchiman, lekin u ishlamayapti (tahrirlashga qarang)
qo'shib qo'ydi muallif Jéwôm', manba

echimni topdim

getSupportFragmentManager().beginTransaction()
     .replace(R.id.framelayout,new MyFragment1())
     .commit();

final Fragment fragmentInFrame = getSupportFragmentManager().findFragmentById(R.id.framelayout);

if (fragmentInFrame instanceof MyFragment1){
      Log.d("debug", "you are in MyFragment1");
} else if (fragmentInFrame instanceof MyFragment2) {
      Log.d("debug", "you are in MyFragment2");
}
1
qo'shib qo'ydi
final Fragment fragmentInFrame = getSupportFragmentManager().findFragmentById(R.id.framelayout);

getSupportFragmentManager().beginTransaction()
     .replace(R.id.framelayout, new MyFragment1())
     .commit();

Siz bu erda fragmentni almashtirasiz. Shunday qilib, fragmentInFrame hali ham eski fragmentga murojaat qiladi.

O'zgartirishingizdan so'ng uni yana topib, fragmentInFrame o'zgaruvchisini yangilashingiz kerak.

fragmentInFrame = getSupportFragmentManager().findFragmentById(R.id.framelayout);

Endi fragmentInFrame tekshiruvi ishlaydi.

final kalit so'zini olib tashlashni unutmang.

1
qo'shib qo'ydi

Sizning har bir Fragment sinfida, onCreateView usulidagi kirishni aniqlang.

0
qo'shib qo'ydi

Sizning har bir Fragment sinfida, onCreateView usulidagi kirishni aniqlang.

0
qo'shib qo'ydi

Sizning har bir Fragment sinfida, onCreateView usulidagi kirishni aniqlang.

0
qo'shib qo'ydi

Siz kabi misolni tekshirishingiz kerak

fragment ob'ektingiz bilan tekshirishingiz kerak:

 public Fragment getVisibleFragment(){
   FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
   List fragments = fragmentManager.getFragments();
   if(fragments != null){
    for(Fragment fragment : fragments){
        if(fragment != null && fragment.isVisible())
            return fragment;
    }
   }
   return null;
 }

fragment = getVisibleFragment();
if (fragment instance of MyFragment1){

}
0
qo'shib qo'ydi
Men shunga o'xshash echimlarni sinab ko'rdim, lekin u ishlamayapti (tahrirlashga qarang)
qo'shib qo'ydi muallif Jéwôm', manba
Ha, parcha fragmentiningInFrame = getSupportFragmentManager() bilan topiladi. findFragmentById (R.id.framelayou & zwnj; t);
qo'shib qo'ydi muallif Jéwôm', manba
Yangilangan javobni ko'ring
qo'shib qo'ydi muallif Jd Prajapati, manba
keyin sizning namunangiz MyFragment1 ning sinfidir, unda aks holda bajarilmaydi.
qo'shib qo'ydi muallif Jd Prajapati, manba
Siz birinchi bo'lib parcha obyektini olasizmi? keyin misolni tekshirish kerak ...
qo'shib qo'ydi muallif Jd Prajapati, manba

Siz kabi misolni tekshirishingiz kerak

fragment ob'ektingiz bilan tekshirishingiz kerak:

 public Fragment getVisibleFragment(){
   FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
   List fragments = fragmentManager.getFragments();
   if(fragments != null){
    for(Fragment fragment : fragments){
        if(fragment != null && fragment.isVisible())
            return fragment;
    }
   }
   return null;
 }

fragment = getVisibleFragment();
if (fragment instance of MyFragment1){

}
0
qo'shib qo'ydi
Ha, parcha fragmentiningInFrame = getSupportFragmentManager() bilan topiladi. findFragmentById (R.id.framelayou & zwnj; t);
qo'shib qo'ydi muallif Jéwôm', manba
Men shunga o'xshash echimlarni sinab ko'rdim, lekin u ishlamayapti (tahrirlashga qarang)
qo'shib qo'ydi muallif Jéwôm', manba
Yangilangan javobni ko'ring
qo'shib qo'ydi muallif Jd Prajapati, manba
keyin sizning namunangiz MyFragment1 ning sinfidir, unda aks holda bajarilmaydi.
qo'shib qo'ydi muallif Jd Prajapati, manba
Siz birinchi bo'lib parcha obyektini olasizmi? keyin misolni tekshirish kerak ...
qo'shib qo'ydi muallif Jd Prajapati, manba

Siz kabi misolni tekshirishingiz kerak

fragment ob'ektingiz bilan tekshirishingiz kerak:

 public Fragment getVisibleFragment(){
   FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
   List fragments = fragmentManager.getFragments();
   if(fragments != null){
    for(Fragment fragment : fragments){
        if(fragment != null && fragment.isVisible())
            return fragment;
    }
   }
   return null;
 }

fragment = getVisibleFragment();
if (fragment instance of MyFragment1){

}
0
qo'shib qo'ydi
Ha, parcha fragmentiningInFrame = getSupportFragmentManager() bilan topiladi. findFragmentById (R.id.framelayou & zwnj; t);
qo'shib qo'ydi muallif Jéwôm', manba
Men shunga o'xshash echimlarni sinab ko'rdim, lekin u ishlamayapti (tahrirlashga qarang)
qo'shib qo'ydi muallif Jéwôm', manba
Yangilangan javobni ko'ring
qo'shib qo'ydi muallif Jd Prajapati, manba
keyin sizning namunangiz MyFragment1 ning sinfidir, unda aks holda bajarilmaydi.
qo'shib qo'ydi muallif Jd Prajapati, manba
Siz birinchi bo'lib parcha obyektini olasizmi? keyin misolni tekshirish kerak ...
qo'shib qo'ydi muallif Jd Prajapati, manba