android - NullpointerException 不显示文件名和行号
问题描述
我遇到了一个问题,我的活动switching
在选项卡之间关闭,我有 2 个选项卡并且为此使用了 2 个单独的片段。
这是错误堆栈
06-28 20:32:18.008 10728-10728/com.mycom.myapp W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getVisibility()' on a null object reference
06-28 20:32:18.009 10728-10728/com.mycom.myapp W/System.err: at android.view.ViewRootImpl.getHostVisibility(ViewRootImpl.java:1786)
at android.view.ViewRootImpl.handleAppVisibility(ViewRootImpl.java:1422)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4804)
at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 20:32:18.009 10728-10728/com.mycom.myapp W/System.err: at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7058)
06-28 20:32:18.009 10728-10728/com.mycom.myapp W/System.err: at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
活动代码
public class DummyLsActivity extends AppCompatActivity {
@BindView(R.id.pager)
ViewPager pager;
@BindView(R.id.tablayout)
TabLayout tabLayout;
private static DummyLsActivity dummyLsActivity = null;
LockScreenPagerAdapter myPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dummy_ls);
ButterKnife.bind(this);
tabLayout.addTab(tabLayout.newTab().setText("FirstTab"));
tabLayout.addTab(tabLayout.newTab().setText("SecondTab"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
myPagerAdapter = new LockScreenPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
pager.setAdapter(myPagerAdapter);
tabLayout.setupWithViewPager(pager);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}
public static DummyLsActivity getInstance() {
return dummyLsActivity;
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
第一段代码
public class LsFirstFragment extends Fragment {
Unbinder unbinder;
View view;
LsArticlesSharedPreference lsArticlesSharedPreference;
@BindView(R.id.ls_first_iv)
ImageView lsFirstIv;
@BindView(R.id.ls_first_article_head_overlay_tv)
TextView lsFirstArticleHeadOverlayTv;
@BindView(R.id.ls_first_swipe_left_tv)
TextView lsFirstSwipeLeftTv;
public LsFirstFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_ls_first, container, false);
unbinder = ButterKnife.bind(this, view);
lsArticlesSharedPreference = new LsArticlesSharedPreference();
loadOfflineArticlesData();
return view;
}
public void loadOfflineArticlesData() {
if (getContext() != null && lsArticlesSharedPreference != null) {
List<Articles> savedArticles = lsArticlesSharedPreference.getOfflineDataLs(getContext());
RequestOptions requestOptions = new RequestOptions();
if (getActivity() != null && savedArticles != null) {
lsFirstSwipeLeftTv.setVisibility(View.VISIBLE);
lsFirstArticleHeadOverlayTv.setVisibility(View.VISIBLE);
Glide.with(getActivity())
.setDefaultRequestOptions(requestOptions)
.load(savedArticles.get(0).getArticleSecondImage())
.thumbnail(Glide.with(getContext()).load(R.drawable.logo_anim_full))
.into(lsFirstIv);
lsFirstIv.setScaleType(ImageView.ScaleType.FIT_XY);
lsFirstArticleHeadOverlayTv.setText(savedArticles.get(0).getArticleHeading());
}
}
}
@Override
public void onResume() {
super.onResume();
}
}
第二段代码
公共类 LsSecondFragment 扩展片段实现 ViewPagerListener {
View view;
Unbinder unbinder;
private LsArticlesAdapter lsArticlesAdapter;
LsArticlesSharedPreference lsArticlesSharedPreference;
@BindView(R.id.ls_articles_viewpager)
ViewPager lsArticlesViewpager;
public LsSecondFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_ls_second, container, false);
unbinder = ButterKnife.bind(this, view);
lsArticlesSharedPreference = new LsArticlesSharedPreference();
loadOfflineArticlesData();
return view;
}
@Override
public void setViewPager(int position) {
lsArticlesViewpager.setCurrentItem(position);
}
public void loadOfflineArticlesData() {
if (getContext() != null && lsArticlesSharedPreference != null) {
List<Articles> savedArticles = lsArticlesSharedPreference.getOfflineDataLs(getContext());
if (savedArticles != null && savedArticles.size() == 0) {
loadOfflineArticlesData();
} else {
System.out.println("STORY IS CALLED FIRST");
lsArticlesAdapter = new LsArticlesAdapter(getContext(), savedArticles);
lsArticlesViewpager.setAdapter(lsArticlesAdapter);
lsArticlesAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onResume() {
super.onResume();
}
}
它显示Attempt to call virtual method
getVisibility() on a
null object reference
,但事实是,我没有getVisibility()
在整个项目的任何地方使用。有人可以指出相同的原因。
解决方案
推荐阅读
- sql - 插入
和 * - python - django DoesNotExist 管理面板不错
- python - DRF:如何使用视图集中的操作装饰设置正确的 view_name
- haskell - 斐波那契无限列表性能(高阶函数与标准递归)
- reactjs - 反应传单未正确显示地图
- swift - 允许 AVCaptureVideoPreviewLayer 预览随设备旋转
- python-3.x - 如何确定线程池的大小以获得最佳性能
- python - Sphinx 文档使用 autodoc 在本地成功构建,但是当我尝试在 readthedocs 上构建它时,所有页面都变空了
- powershell - 尝试将 JSON 反序列化为 Powershell 中的类型化对象
- google-colaboratory - 如何在文本文件中复制 colab 终端输出?