[英]Why am I getting a java.lang.NullPointerException error when I try to switch activities in studio?
我试图查找是什么原因导致的,但我无法找出原因所在-我正在设置点击监听器以激活按钮开关。 我没有收到任何错误弹出窗口,但是当我运行该应用程序时,它崩溃了,并且logcat显示我在侦听器本身上获取了java.lang.NullPointerException。 这是代码-
public class MainScreen extends AppCompatActivity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
btn = (Button) findViewById(R.id.mainTypesBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainScreen.this, MainTypes.class));
}
});
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loading_screen);
}
我在btn.setOnClickListener(new View.OnClickListener() {
MainTypes是第二个活动,其中没有任何内容。
第一:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loading_screen);
之后:
@Override
protected void onCreate(Bundle savedInstanceState) {
然后你做:
btn = (Button) findViewById(R.id.mainTypesBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoadingScreen.this, MainTypes.class));
}
});
和第二个细节:
LoadingScreen不是您当前的活动...是MainScreen
您在setContentView()
之前调用findViewById()
setContentView()
。 尝试这个:
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loading_screen);
btn = (Button) findViewById(R.id.mainTypesBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoadingScreen.this, MainTypes.class));
}
});
}
尝试这样的事情。
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loading_screen);
btn = (Button) findViewById(R.id.mainTypesBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoadingScreen.this, MainTypes.class));
}
});
}
实际上setContentView
做到了这一神奇,在按钮将创建的setContentView
方法中。 在那之前它只是null
初始化按钮时尚未设置布局。 因此,首先需要设置布局,然后初始化可以解决问题的按钮。请尝试以下操作:
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loading_screen);
Button btn = (Button) findViewById(R.id.mainTypesBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoadingScreen.this, MainTypes.class));
}
});
}`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.