Как решить, что ‘Context’ — это тип, который недопустим в данном контексте?

#c# #android #xamarin

#c# #Android #xamarin

Вопрос:

Я новичок в Android и xamarin, я хочу добавить listview на свою вкладку, созданную с помощью fragment.

Мой код здесь, это пример кода для xamarin для создания трех вкладок, которые я хочу создать listview в SpeakerFragment:

 using System;
using Android.App;
using Android.OS;
using Android.Views;
using Android.Widget;
using System.Collections.Generic;
using Android.Content;
using Android.Runtime;

namespace com.xamarin.example.actionbar.tabs
{
    public class SpeakersFragment :Fragment
    {

        private List<string> mItems;
        private ListView mListView;

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {

            View view = inflater.Inflate(Resource.Layout.listviewlayout,container,false);
            mListView = view.FindViewById<ListView>(Resource.Id.myList);

            mItems = new List<string>();
            mItems.Add("One");
            mItems.Add("Two");
            mItems.Add("Three");
            mItems.Add("Four");
            mItems.Add("Five");

            ArrayAdapter<string> adapter = new ArrayAdapter<string>(Context,Android.Resource.Layout.SimpleListItem1, objects: mItems.ToArray());

            mListView.Adapter = adapter;
            return view;
        }

    }

    public class SessionsFragment : Fragment
    {
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {

            View view = inflater.Inflate(Resource.Layout.simple_fragment, null);
            view.FindViewById<TextView>(Resource.Id.textView1).SetText(Resource.String.sessions_tab_label);
            view.FindViewById<ImageView>(Resource.Id.imageView1).SetImageResource(Resource.Drawable.ic_action_sessions);
            return view;
        }
    }

    public class WhatsOnFragment : Fragment
    {
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            View view = inflater.Inflate(Resource.Layout.simple_fragment, null);
            view.FindViewById<TextView>(Resource.Id.textView1).SetText(Resource.String.whatson_tab_label);
            view.FindViewById<ImageView>(Resource.Id.imageView1).SetImageResource(Resource.Drawable.ic_action_whats_on);
            return view;
        }
    }
}    
 

Почему возникает эта ошибка?

‘Context’ — это тип, который недопустим в данном контексте?

Комментарии:

1. Вам нужен экземпляр Context , а не тип. Я полагаю, вам нужно что-то вроде new ArrayAdapter<string>(myContext, Android.Resource.Layout.SimpleListItem1, objects: mItems.ToArray()) where myContext is экземпляр Context .

Ответ №1:

Свойство Fragment.Context доступно только с уровня API 23. https://developer.android.com/reference/android/app/Fragment.html#getContext ()

Вместо этого вы можете использовать Activity или Application.Context . Или установите версию компиляции на уровень API 23, но тогда вы можете столкнуться с некоторыми сбоями в старых версиях Android, если вы также не установите минимальную поддерживаемую версию на 23.

 ArrayAdapter<string>(Activity, Android.Resource.Layout.SimpleListItem1, objects: mItems.ToArray())