Переопределить instantiateItem - Несовместимый тип возвращаемого значения.

Я пытаюсь переопределить метод instantiateItem в моем классе расширяется FragmentGridPgerAdapter,

import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.wearable.view.CardFragment;

import android.support.wearable.view.FragmentGridPagerAdapter;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.TextView;

public class PickerAdapter extends FragmentGridPagerAdapter
{
    ...
    @Override
    protected Object instantiateItem(ViewGroup viewGroup, int row, int col)
    {
        TextView textView = new TextView(mContext);
        textView.setText("Ahoj");

        viewGroup.addView(textView);
        return textView;
    }
    ...
  } 

Но Android Studio дает мне ошибку в слове Object:

'instantiateItem(ViewGroup, int, int)' in 'com.example.sk1x1.myapplication.PickerAdapter' clashes with 'instantiateItem(ViewGroup, int, int)' in 'android.support.wearable.view.FragmentGridPagerAdapter'; attempting to use incompatible return type

Если я запускаю программу, во время сборки я получаю:

Error:(78, 22) error: instantiateItem(ViewGroup,int,int) in PickerAdapter cannot override instantiateItem(ViewGroup,int,int) in GridPagerAdapter
attempting to assign weaker access privileges; was public

Что я делаю не так?

2 ответа

Error:(78, 22) error: instantiateItem(ViewGroup,int,int) in PickerAdapter cannot override instantiateItem(ViewGroup,int,int) in GridPagerAdapter
attempting to assign weaker access privileges; was public

+ Изменить

@Override
protected Object instantiateItem(ViewGroup viewGroup, int row, int col)

с

@Override
public Object instantiateItem(ViewGroup viewGroup, int row, int col)

Как сказал @Blackbelt, у вас должно быть приведенное ниже определение функции, и вы должны вернуть фрагмент, который вы хотите вернуть: пользовательский или фрагмент карты, если хотите (ниже примера для CardFragment).

@Override
public Fragment instantiateItem(ViewGroup container, int row, int column) {
    return CardFragment.create("title", "text", R.drawable.ic_your_icon);
}

new Fragment() вернул бы пустой фрагмент.

В Android Studio используйте Ctrl+o, чтобы переопределить функцию, у вас будет правильное определение.

Другие вопросы по тегам