Java.Lang.NullPointerException: произошла попытка вызвать виртуальный метод int android.view.View.getVisibility () для ссылки на пустой объект - PullRequest
0 голосов
/ 16 сентября 2018

У меня изначально установлена ​​пейджер вида с 1 фрагментом, фрагмент заполняет линейное представление рециркуляции, чтобы пользователь мог выполнить выбор

public class NoAccessPanelActivity : MasterActivity
{
#region Properties
Fragments.NoAccessListFragment _sysNoAccessFragment;
Fragments.CameraFragment _cameraFragment;
Adapters.NoAccessPanelFragmentsAdapter _adapter;

ViewPager viewPager;
TabLayout tabLayout;
private bool _isCameraFragementRemove = false;
#endregion

#region Activity Override
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.NoAccessPanel);
    ComingFrom = Intent.GetStringExtra("ComingFrom");

    InitPanel();
}

protected override void OnResume()
{
    base.OnResume();
    BindHandlers();
}

protected override void OnPause()
{
    UnbindHandlers();
    base.OnPause();
}

public override void OnBackPressed()
{
    if (ProceedDiscardCapturedImage())
        OnBack();
}
#endregion

#region Events
private void _sysNoAccessFragment_OnViewNewFragment(ButtonInListClickedButtonListArgs e)
{
    ShowLoadingPanel("");

    switch (e.ButtonName)
    {
        case "AddCamera":
            if (_cameraFragment == null)
            {
                _cameraFragment = new Fragments.CameraFragment();
                _adapter.AddFragment(_cameraFragment, "Camera");
                //_adapter.AddFragmentWithoutTitle(_cameraFragment);
                _adapter.NotifyDataSetChanged();
            }
            break;
        case "ShowCamera":
            var cameraIndex = _adapter.GetItemIndex(_cameraFragment);
            viewPager.SetCurrentItem(cameraIndex, true);

            break;
        case "RemoveCamera":
            if (_cameraFragment != null)
            {
                _cameraFragment.DeleteAllImages();
                _adapter.RemoveFragment(_cameraFragment, "Camera");
                _adapter.NotifyDataSetChanged();
                _cameraFragment.Dispose();
                _cameraFragment = null;
            }
            break;
    }
}


#endregion

#region Helpers
private void InitPanel()
{

    viewPager = (ViewPager)FindViewById(Resource.Id.viewpager);
    SetupViewPager(viewPager);

    tabLayout = (TabLayout)FindViewById(Resource.Id.tabs);
    tabLayout.SetupWithViewPager(viewPager);
}

private void SetupViewPager(ViewPager viewPager)
{
    _sysNoAccessFragment = new Fragments.NoAccessListFragment();
    _adapter = new Adapters.NoAccessPanelFragmentsAdapter(SupportFragmentManager);
    _adapter.AddFragment(_sysNoAccessFragment, "No Access");
    viewPager.Adapter = _adapter;
    viewPager.AdapterChange += ViewPager_AdapterChange;
}



private void BindHandlers()
{
    NextButton.Click += NextButton_Click;
    _sysNoAccessFragment.OnViewNewFragment += _sysNoAccessFragment_OnViewNewFragment;
    tabLayout.TabSelected += TabLayout_TabSelected;
}

private void UnbindHandlers()
{
    NextButton.Click -= NextButton_Click;
    _sysNoAccessFragment.OnViewNewFragment -= _sysNoAccessFragment_OnViewNewFragment;
    tabLayout.TabSelected -= TabLayout_TabSelected;
}


#endregion
}

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

 #region Events
private void _sysNoAccessFragment_OnViewNewFragment(ButtonInListClickedButtonListArgs e)
{
    switch (e.ButtonName)
    {
        case "AddCamera":
            if (_cameraFragment == null)
            {
                _cameraFragment = new Fragments.CameraFragment();
                _adapter.AddFragment(_cameraFragment, "Camera");
                //_adapter.AddFragmentWithoutTitle(_cameraFragment);
                _adapter.NotifyDataSetChanged();
            }
            break;
        case "ShowCamera":
            var cameraIndex = _adapter.GetItemIndex(_cameraFragment);
            viewPager.SetCurrentItem(cameraIndex, true);

            break;
        case "RemoveCamera":
            if (_cameraFragment != null)
            {
                _cameraFragment.DeleteAllImages();
                _adapter.RemoveFragment(_cameraFragment, "Camera");
                _adapter.NotifyDataSetChanged();
                _cameraFragment.Dispose();
                _cameraFragment = null;
            }
            break;
    }
}

Первый выбор, просмотр адаптера пейджера, успешно добавьте фрагмент камеры.Второй выбор: просмотр пейджера требует удаления фрагмента камеры из-за элемента, выбранного из списка, мой код работает в режиме прерывания с сообщением "Java.Lang.NullPointerException: попытка вызвать виртуальный метод" int android.view.View.getVisibility() 'на нулевой ссылке на объект произошла "

Что еще хуже, я не могу найти любой код, который вызывает это исключение, ниже приведена информация, которую я могу найти в журнале устройства cat error log from device logcat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...