Не удается разрешить метод get Root () при использовании viewBinding - PullRequest
1 голос
/ 02 апреля 2020

Я использую viewBinding в моем проекте, который работает отлично. Но у меня есть проблема, где getRoot() не может быть решена в этой строке View view = binding.getRoot(). Мой код работает нормально без каких-либо сбоев, но я хочу, чтобы ошибка исчезла go и просто не могу решить проблему. Я попытался отключить и снова включить viewBinding, сделать недействительными кэши, перезапустить и очистить проект, но эта досадная ошибка, похоже, не исчезла go.

Вот мой код

build .gradle

...
viewBinding {
        enabled = true
    }
...

MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
        View view = binding.getRoot();
        setContentView(view);

        binding.bottomNavigationView.setOnNavigationItemSelectedListener(navListener);
        ...
}

активностьMain

...
<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation_view"
        style="@style/Widget.MaterialComponents.BottomNavigationView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="?attr/colorSurface"
        app:menu="@menu/bottom_nav_menu" />
...

1 Ответ

0 голосов
/ 03 апреля 2020

Я наконец исправил это !!

Я прочитал в документах , что binding.getRoot() получает представление root (самое внешнее представление) в соответствующем макете. Поэтому я решил, что дам root представление id и вызову этот идентификатор.

activity_main

<RelativeLayout
        android:id="@+id/root"
        ...>
</RelativeLayout>

MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
        View view = binding.root;
        setContentView(view);
        ...
}
...