Почему я не могу инициализировать объект VideoView с помощью метода FindViewById? - PullRequest
0 голосов
/ 04 апреля 2020

Я хочу воспроизвести видео в формате mp4, которое я положил в папку Resources / raw. Ниже приведен мой код, и отображается сообщение об ошибке: «Инициализатор поля не может быть применен к не статическому c файлу или нестатическому c методу или свойству» (перевод с немецкого), «FindViewById (Resource.Id.vv»). ) 'будучи подчеркнутой частью. В моем файле макета я включил VideoView с идентификатором 'vd'. Я был бы очень благодарен за любую помощь в воспроизведении моего видео!

using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;

namespace App_1_design
{
    [Activity(Theme = "@style/AppTheme", MainLauncher = true]
    public class MainActivity : AppCompatActivity
    {
        VideoView vid = (VideoView) FindViewById(Resource.Id.vv);

1 Ответ

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

Нам нужно инициализировать элементы управления в событии OnCreate после установки файла макета, например:

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    VideoView vid;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);

        vid = FindViewById<VideoView>(Resource.Id.vv);

        var uri = Android.Net.Uri.Parse("android.resource://" + PackageName + "/" + Resource.Raw.sample_video);
        vid.SetVideoURI(uri);
        vid.Start();
    }
}

Обновление

, почему теперь в сообщении об ошибке указано «ресурс не содержать определение для raw '?

enter image description here

Убедитесь, что действие по сборке вашего видео - AndroidResource. И тогда мы сможем получить доступ к этому ресурсу через Resource.Raw.[yourVideoID].

...