onResume 中的 NullPointerException

Posted

技术标签:

【中文标题】onResume 中的 NullPointerException【英文标题】:NullPointerException in onResume 【发布时间】:2014-04-12 10:24:02 【问题描述】:

我有两个活动 MainActivity 和 SecondActivity

activity MainActivity .java中的代码

public class MainActivity extends FragmentActivity implements OnMarkerClickListener 

@Override
 protected void onCreate(Bundle savedInstanceState) 
      super.onCreate(savedInstanceState);
      getWindow().requestFeature(Window.FEATURE_NO_TITLE);
      setContentView(R.layout.activity_main_screen);
      databaseobj = new AppDatabase(MainActivity.this, null);
      listview = (ListView) findViewById(R.id.store_listview);
      noSavedMsg = (TextView) findViewById(R.id.no_msg);
      ..
      ..
      ..//Other code logic
      ..
 

 @Override
 protected void onResume() 
      if (databaseobj.GetAll() != -1)  //NULL POINTER EXCEPTION
      listview.setVisibility(View.GONE);  //NULL POINTER EXCEPTION
      noSavedMsg.setVisibility(View.VISIBLE); //NULL POINTER EXCEPTION
      
      super.onResume();
  

我从另一个活动返回后得到空指针异常;

MainActivity -> SecondActivity 的新意图

SecondActivity->finish() 然后 MainActivity-> onResume() NULL POINTER EXCEPTION

请帮忙!

【问题讨论】:

什么是NoSavedMsg 1.变量是如何声明的? 2.通常super.onResume()在被覆盖的方法中是第一个而不是最后一个。 任何给定的解决方案是否解决了您的问题?如果是,那么您应该接受最佳解决方案。 【参考方案1】:

您的 TextView 名称是 noSavedMsg,但您正在尝试将可见性设置为名为 NoSavedMsg...的视图,而这两者并不相同。

改变这一行...

NoSavedMsg.setVisibility(View.VISIBLE);

到...

noSavedMsg.setVisibility(View.VISIBLE);

【讨论】:

对不起它的 noSavedMsg 只;但为什么它在前面的行(即在 databaseobj 和 On listview)上给出空指针异常 如果您的代码在 listview 上崩溃,那么在该行之后就不可能再进一步...所以,listviewdatabaseobj 不为空...noSavedMsg 是null 并且应用程序在这一行崩溃。【参考方案2】:

你确定你需要那个资本N吗?

NoSavedMsg.setVisibility(View.VISIBLE);

而不是:

noSavedMsg.setVisibility(View.VISIBLE);

【讨论】:

对不起它的 noSavedMsg 只;但为什么它在前面的行(即在 databaseobj 和 On listview)上给出空指针异常【参考方案3】:
databaseobj = new AppDatabase(MainActivity.this, null);
listview = (ListView) findViewById(R.id.store_listview);
noSavedMsg = (TextView) findViewById(R.id.no_msg);

将此代码添加到 onResume 方法中,看看它是否有效。

【讨论】:

可能是因为当您更改活动时,第一个活动会释放其资源,这意味着销毁任何变量。您可以尝试使用 startActivityForResult 而不是 startactivity(如果您还没有)

以上是关于onResume 中的 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPointerEx

Maven + Spring + Hibernate:hibernate3-maven-plugin hbm2ddl 失败,原因是“Caused by: java.lang.NullPointerEx

onResume 中的 NullPointerException

在android应用程序中,调用onResume方法时清除状态栏中的小图标

Android - 如何访问在 onResume 中的 onCreate 中实例化的 View 对象?

将 onPause/onResume 添加到 Ionic 2 页面中的 Youtube 视频