Android 抛出空指针异常

sky9986 2014-05-19 10:41:34
百思不得其解,求高手解答


下面是程序代码
package com.amaker.wlo;

import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

import com.amaker.adapters.JsonArrayAdapter;
import com.amaker.util.HttpUtil;

public class OrderActivity extends Activity {
// 桌号下拉列表
private Spinner tableNoSpinner;
// 开桌、点菜和下单按钮
private Button orderBtn, addBtn, startBtn;
// 人数编辑框
private EditText personNumEt;
// 点菜列表
private ListView lv;
// 开桌生成的订单Id
private String orderId;
// 点菜列表中绑定的数据
private List data = new ArrayList();
// 点菜列表中具体的数据项
private Map map;
// ListView 的 Adapter
private SimpleAdapter sa;
// ListView 中显示的数据项
private String[] from = { "id", "name","num", "price", "remark" };
// 引用的TextView Drawable ID
private int[] to = new int[5];

private Handler handler;


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 为Activity设置界面布局
setContentView(R.layout.order);

// 实例化Spinner
tableNoSpinner = (Spinner) findViewById(R.id.tableNoSpinner);
// 为桌号下拉列表Spinner绑定数据

handler = new MyHandler();
// 实例化开桌按钮
startBtn = (Button) findViewById(R.id.startButton02);
// 为开桌按钮添加监听器
startBtn.setOnClickListener(startListener);

// 实例化点菜按钮
addBtn = (Button) findViewById(R.id.addMealButton01);
// 为点菜按钮添加监听器
addBtn.setOnClickListener(addListener);

// 实例化下单按钮
orderBtn = (Button) findViewById(R.id.orderButton02);
// 为下单按钮添加监听器
orderBtn.setOnClickListener(orderListener);

// 实例化人数编辑框
personNumEt = (EditText) findViewById(R.id.personNumEditText02);

// 实例化ListView
lv = (ListView) findViewById(R.id.orderDetailListView01);
// 为点菜列表ListView绑定数据
setMenusAdapter();
//当桌位的下拉按钮被选中时触发
tableNoSpinner.setOnItemSelectedListener(
new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
//从模型里取选中的那条记录(前面服务器返回的JSON对象)
JSONObject item = (JSONObject)parent.getItemAtPosition(position);
/* orderBtn.setEnabled(true);
*/ try {

if(item.getInt("flag")==1)
{
startBtn.setEnabled(false); //把开桌按钮给禁用
personNumEt.setText(item.getInt("personNum")+"");

}
else
{
startBtn.setEnabled(true); //把开桌按钮给启用
personNumEt.setText("");
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub

}
}

);
setTableAdapter();
}
class MyHandler extends Handler{
public void handleMessage(Message msg){
System.out.println("handleMessage----->"+Thread.currentThread().getName());

}
}
// 为点菜列表ListView绑定数据
private void setMenusAdapter(){
// 显示点菜项的TextView引用
to[0] = R.id.id_ListView;
to[1] = R.id.name_ListView;
to[2] = R.id.num_ListView;
to[3] = R.id.price_ListView;
to[4] = R.id.remark_ListView;
// 实例化点菜列表ListView Adapter
sa = new SimpleAdapter(this, data, R.layout.listview, from, to);
// 为ListView绑定数据
lv.setAdapter(sa);
}


// 为桌号下拉列表Spinner绑定数据
private void setTableAdapter(){

//String url = HttpUtil.BASE_URL +"/servlet/CheckTableServlet";
//String result = HttpUtil.queryStringForGet(url);
try {
String url = HttpUtil.BASE_URL +"/servlet/CheckTableServlet";
String result = HttpUtil.queryStringForGet(url);
JSONArray tables = new JSONArray(result);
List<JSONObject> lists = new ArrayList<JSONObject>();
for(int i=0;i<tables.length();i++)
{
lists.add(tables.getJSONObject(i));
}
JsonArrayAdapter adapter = new JsonArrayAdapter(this, android.R.layout.simple_spinner_item, android.R.id.text1, lists, "num");
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
tableNoSpinner.setAdapter(adapter);

} catch (JSONException e) {
// TODO Auto-generated catch block
Log.e("amaker", "转换数据出错");
Message msg = handler.obtainMessage();
handler.sendMessage(msg);
}
}


// 开桌监听器
private OnClickListener startListener = new OnClickListener() {
@Override
public void onClick(View v) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
// 开桌时间
String orderTime = sdf.format(date);
// 开桌用户,从登陆配置文件中获得
SharedPreferences pres = getSharedPreferences("user_msg",
MODE_WORLD_READABLE);
String userId = pres.getString("id", "");
// 桌号
TextView tv = (TextView) tableNoSpinner.getSelectedView();
String tableId = tv.getText().toString();
JSONObject selobj =(JSONObject) tableNoSpinner.getSelectedItem();
try {
if(selobj.getInt("flag")==1)
{
Toast.makeText(OrderActivity.this, "当前桌已经开桌,不能继续。", Toast.LENGTH_LONG);
return;
}
} catch (JSONException e1) {
Toast.makeText(OrderActivity.this, "验证数据失败!。", Toast.LENGTH_LONG);
return;
}
// 人数
String personNum = personNumEt.getText().toString();
// 请求参数列表
List<NameValuePair> params = new ArrayList<NameValuePair>();
// 添加请求参数
params.add(new BasicNameValuePair("orderTime", orderTime));
params.add(new BasicNameValuePair("userId", userId));
params.add(new BasicNameValuePair("tableId", tableId));
params.add(new BasicNameValuePair("personNum", personNum));
UrlEncodedFormEntity entity1=null;
try {
entity1 = new UrlEncodedFormEntity(params,HTTP.UTF_8);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// 请求服务器url
String url = HttpUtil.BASE_URL+"servlet/StartTableServlet";
// 获得请求对象HttpPost
HttpPost request = HttpUtil.getHttpPost(url);
// 设置查询参数
request.setEntity(entity1);
// 获得响应结果
String result= HttpUtil.queryStringForPost(request);
// 将开桌生成的订单Id,赋值给全局orderId
orderId = result;
Toast.
makeText(OrderActivity.this, result, Toast.LENGTH_LONG).show();
startBtn.setEnabled(false);
}
};

...全文
289 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小律律 2014-05-22
  • 打赏
  • 举报
回复
额。运行的界面上不是有 个debug 运行吗。然后你在代码上面点他一下。就能 调试了呀
tony4geek 2014-05-20
  • 打赏
  • 举报
回复
debug 调试下,那个为null 看看。
sky9986 2014-05-20
  • 打赏
  • 举报
回复
非常感谢老师回答我的问题,老师你能详细说明一下,具体怎么调试,怎么操作吗?我是菜鸟,不知道具体怎么操作

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧