@AlexandrMa

Проблема с инициализацией фрагмента, как исправить ошибку?

Помогите исправить ошибку
android.view.InflateException: Binary XML file line #nn Error inflating class androidx.fragment.app.FragmentContainerView

Появляется после того, когда я передаю в конструктор фрагмента - id категории. Без этого конструктора, все работает без проблем. Похоже, что причина в инициализации первого фрагмента.

Код фрагмента
public class FragmentCategory extends Fragment {

  int id;

  //с таким конструктором не работает
  public FragmentCategory(int id) {
    this.id = id;
  }
  
  //так всё работает
  public FragmentCategory() {

  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
   //тут всё без изменений
  }

}


Код Activity
public class MainActivity extends AppCompatActivity {

  BottomNavigationView bottomNavigationView;

  FragmentCategory fragmentCategory1;
  FragmentCategory fragmentCategory2;
  FragmentCategory fragmentCategory3;

  
  @Override
  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    bottomNavigationView = findViewById(R.id.bottomNavigationView);
    bottomNavigationView.setSelectedItemId(R.id.menu_category_1);
		
    fragmentCategory1 = new FragmentCategory(1);
    fragmentCategory2 = new FragmentCategory(2);
    fragmentCategory3 = new FragmentCategory(3);


    bottomNavigationView.setOnItemSelectedListener(item -> {

      switch (item.getItemId()) {

        case R.id.menu_category_1:
          getSupportFragmentManager().beginTransaction().add(R.id.fragments, fragmentCategory1).commit();
          return true;

        case R.id.menu_category_2:
          getSupportFragmentManager().beginTransaction().add(R.id.fragments, fragmentCategory2).commit();
          return true;

        case R.id.menu_category_3:
          getSupportFragmentManager().beginTransaction().replace(R.id.fragments, fragmentCategory3).commit();
          return true;

      }

      return true;

    });


  }
}


Код вставки фрагмента
<androidx.fragment.app.FragmentContainerView
  android:id="@+id/fragments"
  android:name="com.example.shop.FragmentCategory"
  android:layout_width="match_parent"
  android:layout_height="0dp"
  tools:layout="@layout/fragment_category" />
  • Вопрос задан
  • 615 просмотров
Пригласить эксперта
Ответы на вопрос 1
Jacen11
@Jacen11
Проблема с инициализацией фрагмента, как исправить ошибку?
проблема что кое кто не хочет читать документацию
когда я передаю в конструктор фрагмента - id категории
нельзя так делать, вот тут инфа например https://tttzof351.blogspot.com/2014/06/android.html

перед тем как воротить костыли, вначале изучи хотя бы с помощью гугла как правильно делать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы