Почему интеграция фрагмента в xml завершается неудачно с сообщением об ошибке невозможности привести фрагмент к просмотру? - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу создать фрагмент, который я смогу использовать в качестве кнопки в нескольких действиях (я знаю, что у Android есть собственная кнопка, но для меня важно иметь конкретный пользовательский интерфейс).

Я пытаюсь интегрировать мою кнопку в AppCompatActivity, добавив свой xml:

<android.support.v4.app.Fragment
    android:name="com.myapp.uielements.BackButton"
    android:id="@+id/backbutton"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"/>

Код для кнопки:

import android.support.v4.app.Fragment;
...

public class BackButton extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.backbutton, container, false);

        rootView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getActivity().finish();
            }
        });

        return rootView;
    }
}

Я получаю ошибку:

 Caused by: android.view.InflateException: Binary XML file line #48: Binary XML file line #48: Class is not a View android.support.v4.app.Fragment
 Caused by: android.view.InflateException: Binary XML file line #48: Class is not a View android.support.v4.app.Fragment
 Caused by: java.lang.ClassCastException: class android.support.v4.app.Fragment cannot be cast to android.view.View

1 Ответ

0 голосов
/ 04 сентября 2018

android.support.v4.app.Fragment - это имя класса, которое не является View. Планировщик макета ожидает увидеть View s или специальные теги, такие как fragment. Чтобы создать фрагмент с помощью XML-макета, используйте fragment:

<fragment android:name="com.myapp.uielements.BackButton" ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...