【问题标题】:NullPointerException in onResumeonResume 中的 NullPointerException
【发布时间】: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()在被覆盖的方法中是第一个而不是最后一个。
  • 任何给定的解决方案是否解决了您的问题?如果是,那么您应该接受最佳解决方案。

标签: java android android-activity android-fragmentactivity


【解决方案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(如果您还没有)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多