android mvc java.lang.NullPointerException
当我不使用mvc时,我的程序可以工作,但当我将其转换为java.lang.NullPointerException时 我不明白,我最近学习了android和java 代码: modelbike.javaandroid mvc java.lang.NullPointerException,java,android,nullpointerexception,Java,Android,Nullpointerexception,当我不使用mvc时,我的程序可以工作,但当我将其转换为java.lang.NullPointerException时 我不明白,我最近学习了android和java 代码: modelbike.java private int[][] bike; private int leg; private int height; public int[][] getBike() { return bike; } public void setBike(int[][] bike) { t
private int[][] bike;
private int leg;
private int height;
public int[][] getBike() {
return bike;
}
public void setBike(int[][] bike) {
this.bike = bike;
}
// another Getters and Setters
ControllerRoadbike.java
Modelbike m = new Modelbike();
public void initRoadbike(){
final int[][] RoadBike = {
{165, 0, 142, 64, 43, 65, 44, 66, 45, 67 ..},
{165, 0, 143, 64, 43, 65, 44, 66, 45, 67 ..},
.
.}; // roadbike[][] is 61 x 27
m.setBike(RoadBike);
}
public ArrayList<String> showHeight(){
ArrayList<String> height = new ArrayList<String>();
for(int i=142; i<203; i++){
height.add(""+i);
}
return (height);
}
public ArrayList<String> showLeg(){
ArrayList<String> leg = new ArrayList<String>();
for (int i = 0; i < 61; i++) {
if (m.getBike()[i][2] == m.getHeight()) {
for (int j = 3; j < 27; j += 2) {
if (m.getBike()[i][j] != 0) {
leg.add("" + m.getBike()[i][j]);
}
}
}
}
return (leg);
}
public class Calculate_roadbike extends ActionBarActivity {
private ControllerRoadbike c = new ControllerRoadbike();
private Modelbike m = new Modelbike();
private Spinner sp_height;
private Spinner sp_Leg;
private Menu mainMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculate_roadbike);
c.initRoadbike();
showSpinnerHeight();
}
private void showSpinnerHeight(){
sp_height = (Spinner) findViewById(R.id.sp_height);
m.setHeight(Integer.parseInt(sp_height.getSelectedItem().toString()));
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>
(this, android.R.layout.simple_spinner_item,c.showHeight());
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp_height.setAdapter(dataAdapter);
sp_height.setOnItemSelectedListener(
new OnItemSelectedListener() {
public void onItemSelected(
AdapterView<?> parent, View view, int position, long id) {
showleg();
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
private void showleg(){
sp_Leg = (Spinner) findViewById(R.id.sp_leg);
ArrayAdapter<String> dataAdapter1 = new ArrayAdapter<String>
(this, android.R.layout.simple_spinner_item,c.showLeg());
dataAdapter1.setDropDownViewResource
(android.R.layout.simple_spinner_dropdown_item);
sp_Leg.setAdapter(dataAdapter1);
}
}
请帮助..我认为sp_height.getSelectedItem为空,因为最初没有选择任何内容。当您在null上调用toString时,会得到一个NullPointerException。最好的方法是查看Android文档。 从文档中:
public Object getSelectedItem ()
Added in API level 1
Returns
The data corresponding to the currently selected item, or null if there is nothing selected.
另外,sp_height可以为null,但我假设您从xml中正确引用了它,所以我将排除这种可能性。请发布日志。stacktrace在哪里?哪一行抛出空指针异常?sp_Leg可以为空。你确定你的布局正确吗?我不明白,我的java是newbie@gauravjainm.setHeightInteger.parseIntsp_height.getSelectedItem.toString;
public Object getSelectedItem ()
Added in API level 1
Returns
The data corresponding to the currently selected item, or null if there is nothing selected.