Запуск Фрагмент транзакцыі Прыпынак прыкладання, як толькі ён адкрывае

Калі выдаліць .commit() у транзакцыі прыкладанне кампілюецца, але паказвае пусты экран. Калі дадаць .commit() прыкладанне адчыняецца і зачыняецца неадкладна. Я пачатковец фрагментаў хто можа дапамагчы вырашыць гэтую праблему. Я проста дадаў макет ImageView. Infalted яго ў класе Фрагмент і зашытыя выява ў ім. Далей я проста стварыў асобнік гэтага фрагмента ў MainActivity.

<�Моцны> Мой Android-студыя версія: 3.1.3

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>






body_part_fragment.xml

<?xml version="1.0" encoding="utf-8"?>



BodyPartFragment.java

 package com.example.musa.my_frag_app;

 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;

public class BodyPartFragment extends Fragment {

public BodyPartFragment(){
    //Do Nothing
}

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

    View rootView = inflater.inflate(R.layout.body_part_fragment, container);
    ImageView body_image = rootView.findViewById(R.id.body_part_frag);
    body_image.setImageResource(R.drawable.ic_launcher_background);

  return rootView;
}

}

MainActivity.java

  package com.example.musa.my_frag_app;

  import android.support.v4.app.FragmentManager;
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;

  public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    BodyPartFragment headfrag = new BodyPartFragment();
    FragmentManager frag_m = getSupportFragmentManager();
    frag_m.beginTransaction().add(R.id.head_container,headfrag).commit();
    //frag_m.executePendingTransactions();
}
}
0
@MaazBinMusa inflater.inflate (R.layout.body_part_fragment, кантэйнер); , безумоўна, кінуць выключэнне. Па змаўчанні для LayoutInflator.inflate() гэта attachToRoot = ісціна . Ён павінен быць хлусня пры выкліку з onCreateView у Фрагмент як гэта ручкі, якія для вас. Змяненне ў inflater.inflate (R.layout.body_part_fragment, кантэйнер, хлусня);
дададзена аўтар veritas1, крыніца
Не. Той жа вынік.
дададзена аўтар Maaz Bin Musa, крыніца
@AmineNokra няма ніякай памылкі. Гэта проста зачыняецца. Прыкладанне не ўрэзацца. яна проста закрывае сваю дзейнасць.
дададзена аўтар Maaz Bin Musa, крыніца
@VinayRathod Там няма прычын, чаму не трэба праглядаць гэта выява
дададзена аўтар Maaz Bin Musa, крыніца
@VinayRathod Я паспрабаваў рашэнне ніжэй з тэкстам. Гэта таксама не працуе
дададзена аўтар Maaz Bin Musa, крыніца
Гэта працуе ДЗЯКУЮЧЫ @ veritas1
дададзена аўтар Maaz Bin Musa, крыніца
паспрабуйце замяніць() .
дададзена аўтар Shubham Vala, крыніца
Вы можаце ўставіць часопіс памылак?
дададзена аўтар Amine Nokra, крыніца

5 адказы

inflater.inflate(R.layout.body_part_fragment, container); will definitely throw an exception. The default for LayoutInflator.inflate() is attachToRoot=true. It should be false when called from onCreateView in a Fragment as this handles that for you. Change to inflater.inflate(R.layout.body_part_fragment, container, false);

5
дададзена

add param for attachToRoot false

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View rootView = inflater.inflate(R.layout.body_part_fragment, container, false);
    TextView body_text = rootView.findViewById(R.id.body_part_frag);
    body_text.setText("Hello World");
    return rootView;
}
2
дададзена
Тым не менш робіць тое ж самае. закрывае прыкладанне
дададзена аўтар Maaz Bin Musa, крыніца

Паспрабуйце гэта для часткі фрагмента цела:



        

0
дададзена
Як гэта будзе працаваць. Мне патрэбен кантэйнер ў асноўнай дзейнасці.
дададзена аўтар Maaz Bin Musa, крыніца
Такая кампаноўка не дзеля MainActivity гэта для body_part_fragment.xml .
дададзена аўтар Shubham Vala, крыніца

змена

Прагляд rootView = inflater.inflate (R.layout.body_part_fragment, кантэйнер);

у

Прагляд rootView = inflater.inflate (R.layout.body_part_fragment, нуль);

0
дададзена

Паспрабуйце так:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
BodyPartFragment headfrag = new BodyPartFragment();
    fragmentTransaction.replace(R.id.head_container, headfrag);
    fragmentTransaction.commit();
0
дададзена