Java.Lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int android.view.View.getVisibility()'

时间:2018-09-16 12:10:58

标签: android-recyclerview nullpointerexception xamarin.android android-viewpager

我最初有一个包含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上可以找到的信息

0 个答案:

没有答案