Java 餐厅计划教程
我在继续学习老师给我的Android教程。该程序的想法是输入餐厅名称、地址和餐厅类型,并创建一个显示此信息的界面 我相信我完全复制了代码。但是,我得到一个错误:Java 餐厅计划教程,java,android,Java,Android,我在继续学习老师给我的Android教程。该程序的想法是输入餐厅名称、地址和餐厅类型,并创建一个显示此信息的界面 我相信我完全复制了代码。但是,我得到一个错误: "The method getType() is undefined for the type Restaurant". 我不知道这意味着什么以及如何修复它 Eclipse给我的建议是“在type restaurant中创建方法getType()”,但当我这样做时,在运行我的程序、输入我的餐馆的详细信息并保存它们时,我会得到一个空指针
"The method getType() is undefined for the type Restaurant".
我不知道这意味着什么以及如何修复它
Eclipse给我的建议是“在type restaurant中创建方法getType()”,但当我这样做时,在运行我的程序、输入我的餐馆的详细信息并保存它们时,我会得到一个空指针异常
因此,我的问题是:
- 这个错误意味着什么
- 我怎么修理它
@SuppressLint({ "ParserError", "ParserError" })
public class LunchList extends Activity {
List<Restaurant> model=new ArrayList<Restaurant>();
ArrayAdapter<Restaurant> adapter=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lunch_list);
Button save=(Button)findViewById(R.id.btnSave);
save.setOnClickListener(onSave);
ListView list=(ListView)findViewById(R.id.restaurants);
adapter=new RestaurantAdapter();
list.setAdapter(adapter);
}
private View.OnClickListener onSave=new View.OnClickListener() {
public void onClick(View v){
Restaurant r=new Restaurant();
EditText name=(EditText) findViewById(R.id.name);
EditText address=(EditText) findViewById(R.id.address);
r.setName(name.getText().toString());
r.setAddress(address.getText().toString());
RadioGroup types=(RadioGroup)findViewById(R.id.types);
switch (types.getCheckedRadioButtonId()){
case R.id.sit_down:
r.setType("sit_down");
break;
case R.id.take_out:
r.setType("take_out");
break;
case R.id.delivery:
r.setType("delivery");
break;
}
adapter.add(r);
}
};
class RestaurantAdapter extends ArrayAdapter<Restaurant> {
RestaurantAdapter(){
super(LunchList.this,R.layout.row,model);
}
public View getView(int position, View convertView, ViewGroup parent){
View row=convertView;
RestaurantHolder holder=null;
if (row==null){
LayoutInflater inflater=getLayoutInflater();
row=inflater.inflate(R.layout.row, parent, false);
holder=new RestaurantHolder(row);
row.setTag(holder);
}
else{
holder=(RestaurantHolder)row.getTag();
}
holder.populateFrom(model.get(position));
return(row);
}
}
static class RestaurantHolder {
private TextView name=null;
private TextView address=null;
private ImageView icon=null;
private View row=null;
RestaurantHolder(View row){
this.row=row;
name=(TextView)row.findViewById(R.id.title);
address=(TextView)row.findViewById(R.id.address);
icon=(ImageView)row.findViewById(R.id.icon);
}
void populateFrom(Restaurant r){
name.setText(r.getName());
address.setText(r.getAddress());
if (r.getType().equals("sit_down")){
icon.setImageResource(R.drawable.sitdown);
}
else if (r.getType().equals("takeout")){
icon.setImageResource(R.drawable.takeout);
}
else{
icon.setImageResource(R.drawable.delivery);
}
}
}
}
将此添加到您的餐厅课程中
public String getType() {
return type;
}
将此添加到您的餐厅课程中
public String getType() {
return type;
}
在回答第一部分的问题时,根据您给我们的代码,您肯定需要在
Restaurant
类中实现getType()
方法
关于NullPointerException
,这可能是因为getType
实现返回了type
的值,该值可能未初始化(实际上,如果setType
实现没有逻辑,则无法设置)。您需要执行以下操作:
public void setType(String string) {
this.type = string;
}
您可能还希望对
午餐列表中返回的type
值执行一些空检查getType
用法。取决于您如何使用它。在回答第一部分的问题时,根据您给我们的代码,您肯定需要在餐厅
类中实现getType()
方法
关于NullPointerException
,这可能是因为getType
实现返回了type
的值,该值可能未初始化(实际上,如果setType
实现没有逻辑,则无法设置)。您需要执行以下操作:
public void setType(String string) {
this.type = string;
}
您可能还希望对午餐列表中返回的type
值执行一些空检查getType
用法。取决于你如何使用它。我真诚地希望讲师给了你一本包含这些教程的书,这本书解释了如何实施这些教程。他做到了。只是这本书没有说明如果发生这种错误该怎么办。另外,我的老师也是android新手,这对我没有帮助。几乎Stackoverflow一直在教我android:)“只是这本书没有说如果发生这个错误该怎么办”——这本书一步一步地告诉你如何实现这个应用,有时还包括中间步骤结果的完整源代码列表,我真诚地希望讲师给了你一本包含这些教程的书,这本书解释了如何实现这些教程。他做到了。只是这本书没有说明如果发生这种错误该怎么办。另外,我的老师也是android新手,这对我没有帮助。几乎Stackoverflow一直在教我android:)“只是这本书没有说如果发生这个错误该怎么办”——这本书一步一步地告诉你如何实现这个应用,有时还包括中间步骤结果的完整源代码列表,并有指向的指针。您的代码解决方案不起作用,但您的解释很有帮助。如果我有这个名声,我会给你一票。别担心。我现在看到的更多的是对艾哈迈德答案的补充。希望有帮助:)您的代码解决方案不起作用,但您的解释很有帮助。如果我有这个名声,我会给你一票。别担心。我现在看到的更多的是对艾哈迈德答案的补充。希望有帮助:)