[英]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.