如何修复android活动中的nullpointerexception? package org.example.mbtiapplication; 导入java.util.ArrayList; 导入android.os.Bundle; 导入android.app.Activity; 导入android.view.view; 导入android.widget.AdapterView; 导入android.widget.AdapterView.OnItemSelectedListener; 导入android.widget.ArrayAdapter; 导入android.widget.Spinner; 公共类MBTITest扩展活动实现了MSelectedListener{ 微调器firstSpinner=(微调器)findViewById(R.id.spinner1); 微调器第二微调器=(微调器)findViewById(R.id.spinner2); 纺纱机第三纺纱机=(纺纱机)findViewById(R.id.spinner3); 微调器第四微调器=(微调器)findViewById(R.id.spinner4); ArrayList计算器=新的ArrayList(); @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_mbtitest); addItemsOnSpinner1(); addItemsOnSpinner2(); 添加喷丝头3(); 添加喷丝头4(); } public void addItemsOnSpinner1(){ 微调器firstSpinner=(微调器)findViewById(R.id.spinner1); //使用字符串数组和默认微调器布局创建ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(此, R.array.spinneraybool,android.R.layout.simple\u spinner\u项); //指定显示选项列表时要使用的布局 setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); //将适配器应用于微调器 firstSpinner.setAdapter(适配器); } public void addItemsOnSpinner2(){ 微调器firstSpinner=(微调器)findViewById(R.id.spinner2); //使用字符串数组和默认微调器布局创建ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(此, R.array.spinneraybool,android.R.layout.simple\u spinner\u项); //指定显示选项列表时要使用的布局 setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); //将适配器应用于微调器 firstSpinner.setAdapter(适配器); } public void addItemsOnSpinner3(){ 微调器firstSpinner=(微调器)findViewById(R.id.spinner3); //使用字符串数组和默认微调器布局创建ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(此, R.array.spinneraybool,android.R.layout.simple\u spinner\u项); //指定显示选项列表时要使用的布局 setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); //将适配器应用于微调器 firstSpinner.setAdapter(适配器); } public void addItemsOnSpinner4(){ 微调器firstSpinner=(微调器)findViewById(R.id.spinner4); //使用字符串数组和默认微调器布局创建ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(此, R.array.spinneraybool,android.R.layout.simple\u spinner\u项); //指定显示选项列表时要使用的布局 setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); //将适配器应用于微调器 firstSpinner.setAdapter(适配器); } @凌驾 已选择公共视图(AdapterView父视图、视图arg1、int arg2、, 长arg3){ 开关(parent.getId()){ 案例R.id.喷丝头1: 字符串firstAnswer=firstSpinner.getSelectedItem().toString(); 添加(第一个答案); 案例R.id.喷丝头2: 字符串secondAnswer=firstSpinner.getSelectedItem().toString(); 添加(第二个答案); 案例R.id.喷丝头3: 字符串thirdAnswer=firstSpinner.getSelectedItem().toString(); 添加评估员(第三名); 案例R.id.喷丝头4: String fourthAnswer=firstSpinner.getSelectedItem().toString(); 评估员。添加(四名); } } @凌驾 未选择公共无效(AdapterView arg0){ //TODO自动生成的方法存根 } }
堆栈跟踪:如何修复android活动中的nullpointerexception? package org.example.mbtiapplication; 导入java.util.ArrayList; 导入android.os.Bundle; 导入android.app.Activity; 导入android.view.view; 导入android.widget.AdapterView; 导入android.widget.AdapterView.OnItemSelectedListener; 导入android.widget.ArrayAdapter; 导入android.widget.Spinner; 公共类MBTITest扩展活动实现了MSelectedListener{ 微调器firstSpinner=(微调器)findViewById(R.id.spinner1); 微调器第二微调器=(微调器)findViewById(R.id.spinner2); 纺纱机第三纺纱机=(纺纱机)findViewById(R.id.spinner3); 微调器第四微调器=(微调器)findViewById(R.id.spinner4); ArrayList计算器=新的ArrayList(); @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_mbtitest); addItemsOnSpinner1(); addItemsOnSpinner2(); 添加喷丝头3(); 添加喷丝头4(); } public void addItemsOnSpinner1(){ 微调器firstSpinner=(微调器)findViewById(R.id.spinner1); //使用字符串数组和默认微调器布局创建ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(此, R.array.spinneraybool,android.R.layout.simple\u spinner\u项); //指定显示选项列表时要使用的布局 setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); //将适配器应用于微调器 firstSpinner.setAdapter(适配器); } public void addItemsOnSpinner2(){ 微调器firstSpinner=(微调器)findViewById(R.id.spinner2); //使用字符串数组和默认微调器布局创建ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(此, R.array.spinneraybool,android.R.layout.simple\u spinner\u项); //指定显示选项列表时要使用的布局 setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); //将适配器应用于微调器 firstSpinner.setAdapter(适配器); } public void addItemsOnSpinner3(){ 微调器firstSpinner=(微调器)findViewById(R.id.spinner3); //使用字符串数组和默认微调器布局创建ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(此, R.array.spinneraybool,android.R.layout.simple\u spinner\u项); //指定显示选项列表时要使用的布局 setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); //将适配器应用于微调器 firstSpinner.setAdapter(适配器); } public void addItemsOnSpinner4(){ 微调器firstSpinner=(微调器)findViewById(R.id.spinner4); //使用字符串数组和默认微调器布局创建ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(此, R.array.spinneraybool,android.R.layout.simple\u spinner\u项); //指定显示选项列表时要使用的布局 setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); //将适配器应用于微调器 firstSpinner.setAdapter(适配器); } @凌驾 已选择公共视图(AdapterView父视图、视图arg1、int arg2、, 长arg3){ 开关(parent.getId()){ 案例R.id.喷丝头1: 字符串firstAnswer=firstSpinner.getSelectedItem().toString(); 添加(第一个答案); 案例R.id.喷丝头2: 字符串secondAnswer=firstSpinner.getSelectedItem().toString(); 添加(第二个答案); 案例R.id.喷丝头3: 字符串thirdAnswer=firstSpinner.getSelectedItem().toString(); 添加评估员(第三名); 案例R.id.喷丝头4: String fourthAnswer=firstSpinner.getSelectedItem().toString(); 评估员。添加(四名); } } @凌驾 未选择公共无效(AdapterView arg0){ //TODO自动生成的方法存根 } },android,nullpointerexception,Android,Nullpointerexception,堆栈跟踪: package org.example.mbtiapplication; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; imp
package org.example.mbtiapplication;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class MBTITest extends Activity implements OnItemSelectedListener {
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner1);
Spinner secondSpinner = (Spinner) findViewById(R.id.spinner2);
Spinner thirdSpinner = (Spinner) findViewById(R.id.spinner3);
Spinner fourthSpinner = (Spinner) findViewById(R.id.spinner4);
ArrayList<String> Evaluator = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mbtitest);
addItemsOnSpinner1();
addItemsOnSpinner2();
addItemsOnSpinner3();
addItemsOnSpinner4();
}
public void addItemsOnSpinner1(){
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner1);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinnerarraybool, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
firstSpinner.setAdapter(adapter);
}
public void addItemsOnSpinner2(){
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner2);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinnerarraybool, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
firstSpinner.setAdapter(adapter);
}
public void addItemsOnSpinner3(){
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner3);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinnerarraybool, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
firstSpinner.setAdapter(adapter);
}
public void addItemsOnSpinner4(){
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner4);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinnerarraybool, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
firstSpinner.setAdapter(adapter);
}
@Override
public void onItemSelected(AdapterView<?> parent, View arg1, int arg2,
long arg3) {
switch (parent.getId()){
case R.id.spinner1:
String firstAnswer = firstSpinner.getSelectedItem().toString();
Evaluator.add(firstAnswer);
case R.id.spinner2:
String secondAnswer = firstSpinner.getSelectedItem().toString();
Evaluator.add(secondAnswer);
case R.id.spinner3:
String thirdAnswer = firstSpinner.getSelectedItem().toString();
Evaluator.add(thirdAnswer);
case R.id.spinner4:
String fourthAnswer = firstSpinner.getSelectedItem().toString();
Evaluator.add(fourthAnswer);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
11-2414:06:55.778:E/AndroidRuntime(1842):致命异常:main
11-2414:06:55.778:E/AndroidRuntime(1842):进程:org.example.mbtiapplication,PID:1842
11-24 14:06:55.778:E/AndroidRuntime(1842):java.lang.RuntimeException:无法实例化活动组件信息{org.example.mbtiapplication/org.example.mbtiapplication.MBTITest}:java.lang.NullPointerException
11-24 14:06:55.778:E/AndroidRuntime(1842):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2102)
11-24 14:06:55.778:E/AndroidRuntime(1842):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
11-24 14:06:55.778:E/AndroidRuntime(1842):在android.app.ActivityThread.access$700(ActivityThread.java:135)
11-24 14:06:55.778:E/AndroidRuntime(1842):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
11-24 14:06:55.778:E/AndroidRuntime(1842):在android.os.Handler.dispatchMessage(Handler.java:102)上
11-2414:06:55.778:E/AndroidRuntime(1842):在android.os.Looper.loop(Looper.java:137)
11-24 14:06:55.778:E/AndroidRuntime(1842):位于android.app.ActivityThread.main(ActivityThread.java:4998)
11-24 14:06:55.778:E/AndroidRuntime(1842):位于java.lang.reflect.Method.Invokenactive(本机方法)
11-24 14:06:55.778:E/AndroidRuntime(1842):位于java.lang.reflect.Method.invoke(Method.java:515)
11-24 14:06:55.778:E/AndroidRuntime(1842):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-24 14:06:55.778:E/AndroidRuntime(1842):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-2414:06:55.778:E/AndroidRuntime(1842):在达尔维克
11-24 14:06:55.778: E/AndroidRuntime(1842): FATAL EXCEPTION: main
11-24 14:06:55.778: E/AndroidRuntime(1842): Process: org.example.mbtiapplication, PID: 1842
11-24 14:06:55.778: E/AndroidRuntime(1842): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.example.mbtiapplication/org.example.mbtiapplication.MBTITest}: java.lang.NullPointerException
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2102)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.access$700(ActivityThread.java:135)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.os.Handler.dispatchMessage(Handler.java:102)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.os.Looper.loop(Looper.java:137)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.main(ActivityThread.java:4998)
11-24 14:06:55.778: E/AndroidRuntime(1842): at java.lang.reflect.Method.invokeNative(Native Method)
11-24 14:06:55.778: E/AndroidRuntime(1842): at java.lang.reflect.Method.invoke(Method.java:515)
11-24 14:06:55.778: E/AndroidRuntime(1842): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-24 14:06:55.778: E/AndroidRuntime(1842): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-24 14:06:55.778: E/AndroidRuntime(1842): at dalvik.system.NativeStart.main(Native Method)
11-24 14:06:55.778: E/AndroidRuntime(1842): Caused by: java.lang.NullPointerException
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.Activity.findViewById(Activity.java:1883)
11-24 14:06:55.778: E/AndroidRuntime(1842): at org.example.mbtiapplication.MBTITest.<init>(MBTITest.java:15)
11-24 14:06:55.778: E/AndroidRuntime(1842): at java.lang.Class.newInstanceImpl(Native Method)
11-24 14:06:55.778: E/AndroidRuntime(1842): at java.lang.Class.newInstance(Class.java:1208)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2093)
11-24 14:06:55.778: E/AndroidRuntime(1842): ... 11 more
Spinner firstSpinner ;
Spinner secondSpinner ;
Spinner thirdSpinner;
Spinner fourthSpinner ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mbtitest);
// initialize after setting the layout to the activity
firstSpinner = (Spinner) findViewById(R.id.spinner1);
secondSpinner = (Spinner) findViewById(R.id.spinner2);
thirdSpinner = (Spinner) findViewById(R.id.spinner3);
fourthSpinner = (Spinner) findViewById(R.id.spinner4);
... //rest of the code
}
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner2);