AlertDialog.show方法异常引起App异常直接退出
源代码看下面,一运行到alertDialog.show();就退出了APP,也调试也找不到原因。
public class roomstatusActivity<pvivate> extends Activity implements OnClickListener{
private List<String> list = new ArrayList<String>();//创建一个String类型的数组列表。
private Spinner mySpinner; //http://blog.csdn.net/kongandroid/article/details/50081427
private ArrayAdapter<String> adapter;//创建一个数组适配器
private AlertDialog alertDialog;
private EditText numberNo;//输入编号implements OnClickListener
private Button btnocroom; // 声明查看更多按钮
private Button btnvacant; // 声明查看更多按钮
//private Button btnorder; // 声明查看更多按钮
private String roomstr;
String imeistr="";
public final static int SHOW_MESSAGE = 0x02;//Updatep定义一个params类
private ProgressDialog progressDialog;//Update创建一个进度条
private HashMap<String, Object> params;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.roomstatus);
onLoad();// 加载
}
// 加载
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void onLoad() {
list.add("c--Clean");
list.add("d--Dirty");
mySpinner = (Spinner) findViewById(R.id.roomStatuspinner);
numberNo=(EditText) findViewById(R.id.roomno);
btnocroom = (Button) findViewById(R.id.OccupiedClean);
btnvacant = (Button) findViewById(R.id.vacant);
params = new HashMap<String,Object>();//Update
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);//样式为原安卓里面有的android.R.layout.simple_spinner_item,让这个数组适配器装list内容。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(adapter);
// 定义退出对话框 在这里定义的对话框
alertDialog = new AlertDialog.Builder(roomstatusActivity.this).setTitle("房态提交!").setPositiveButton("Submit", // OK按钮
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//new AsyncDataLoader(finishTaskCallback).execute();
}
}).setNegativeButton("Cancel", // 取消按钮
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).create();
btnocroom.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
roomstr=numberNo.getText().toString().trim()+"oc-";
if (roomstr.length()>3){
Tools.show(roomstatusActivity.this, "Message Btnocroom...!");
alertDialog.show(); 这里出错,一到这里就退出APP
// builder.show();
// networkroomstatus();
}else{
Tools.show(roomstatusActivity.this, "房间编号不能为空...!");
}
}
});
btnvacant.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
roomstr=numberNo.getText().toString().trim()+"vc-";
if (roomstr.length()>3){
alertDialog.show();这里出错,一到这里就退出APP
// networkroomstatus();
}else{
Tools.show(roomstatusActivity.this, "房间编号不能为空...!");
}
}
});
//spinner的选择事件触发
mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {//选择item的选择点击监听事件
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if (adapter.getItem(arg2).indexOf("-")>0){
roomstr=numberNo.getText().toString().trim()+adapter.getItem(arg2).substring(0,3);
if (roomstr.length()>3){
alertDialog.show();这里出错,一到这里就退出APP
// networkroomstatus();
}else{
Tools.show(roomstatusActivity.this, "房间编号不能为空...!");
}
}
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
// myTextView.setText("Nothing");
}
});
}
//数据、网络判断以及提交处理过程
private void networkroomstatus(){
if (!Tools.checkNetWork(roomstatusActivity.this)) {//Update添加对于网络是否连接的判断
Tools.show(roomstatusActivity.this, "当前没有网络,请确定网络是连接!");
finish();
} else {
//在这里添加弹出窗口进行提示是否要发送
if (roomstr.length()>2){
params.put("tel", Tools.getPhoneImei(roomstatusActivity.this));//Tools.getPhoneImei(ShowMessageActivity.this));// Update用户IMEI码添加电话号码
params.put("roomstatusstr", roomstr);
new AsyncDataLoader(RoomsatusCallback).execute();//Update如果网络正常调用下面的RegMobileCallBack方法
} else {
Tools.show(roomstatusActivity.this, "房间编号不能为空...!");
//ProgressDialog.show(roomstatusActivity.this,"提示" , "请填写房间号后再提交!");//(roomstatusActivity.this, "请填写房间号后再提交!");
}
}
}
//进行房态的修改
private AsyncDataLoader.Callback RoomsatusCallback = new AsyncDataLoader.Callback() {
boolean result;
//private ProgressDialog progressDialog;
public void onPrepare() {
Tools.show(roomstatusActivity.this, roomstr+"房间状态正在修改中....");//progressDialog = ProgressDialog.show(roomstatusActivity.this, "温馨提示", "房间状态正在修改中....");
result = false;
}
public void onStart() {
try {
result = ListManager.RoomStatus(params, handler);// 登录,这里要重写注册方法,这个是登陆的
} catch (Exception e) {
e.printStackTrace();
}
}
public void onFinish() {
// 处理结果
try {
if (result) {// 修改成功
//numberNo.setText(""); //roomstr="";
Intent intent = new Intent(roomstatusActivity.this, null);//這里的问题
startActivity(intent);//numberNo.setText("");
if (!Tools.isServiceRunning(roomstatusActivity.this, "com.topone.hips.service.HIPSService")) {
Intent intentService = new Intent(roomstatusActivity.this, HIPSService.class);
startService(intentService);
}
} else {
Intent intent = new Intent(roomstatusActivity.this, null);
startActivity(intent);
finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
};
private Handler handler = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case SHOW_MESSAGE:
if (msg.obj != null) {
Tools.show(roomstatusActivity.this, msg.obj.toString());
}
break;
}
};
};