Переопределить 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, чтобы переопределить функцию, у вас будет правильное определение.