我在这行代码上的状态变量上得到一个nullPointerException:if (view.getId() == R.id.button && status.equals("Dorado")
。现在我在这里看了很多线程,我真的很幸运,这个例外。像许多其他人一样,我将一个字符串从活动1传递给活动2,除了这个字符串是在按下时从文本视图中提取的(Dorado)。
活动1:
TextView text = (TextView) view;
String selection = text.getText().toString();
Bundle b = new Bundle();
b.putString("Selection", selection);
Intent i = new Intent(MunicipioList.this,SubestacionInfo.class);
i.putExtra("extra", b);
startActivity(i);
活动2:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_subestacion_info);
Bundle extras = getIntent().getExtras();
if (extras != null) {
extras = extras.getBundle("extra");
status = extras.getString("Selection");
}
}
我知道捆绑包不是必需的,我只是在尝试,因为我还在使用其他代码。还有一件事,状态varoable是全局的,在活动开始时声明为" public String status;"所以我不相信这是问题,任何帮助? :)
答案 0 :(得分:1)
让我们打破这个。如果您在此行中获得NPE:
if (view.getId() == R.id.button && status.equals("Dorado"))
然后:
view
是null
或R.id
是null
(我认为这是不可能的)或status
是null
。您应该能够使用调试器或添加跟踪图来解决问题。但我怀疑它是status
。
你说:
还有一件事,状态变量是全局的,在活动开始时声明为“公共字符串状态”;所以我不认为这是问题。
该声明不会初始化status
。您是否在声明后初始化了status
?如果没有,它的初始值将为null
,这足以导致NPE ......如果您从未更改过它!