android的闪退问题2
以我目前的所做的项目所遇到的闪退问题主要表现在以下两个方面
1,比如做百度地图时会遇到闪退问题。主要原因是你所做的项目没有加载百度的架包。如下图所示。
2,比如我做的湘雅3e院项目,就是因为这个原因,但点击医院指南就出现闪退问题。
当打红线的这个包为空,大概就是百度地图之类的架包没有加进去,就会出现闪退问题。
2,出现闪退问题是,控制台会出现错误信息,这是因为activity没有正确访问到.xml控件导致的@+idxxxxxx
例如
package com.zjrc.zsyybz.activity;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import com.zjrc.zsyybz.R;
import com.zjrc.zsyybz.adapter.DiagnosisCostAdapter;
import com.zjrc.zsyybz.common.AsyncTaskManager2;
import com.zjrc.zsyybz.common.AsyncTaskPost.onDataRecvListener2;
import com.zjrc.zsyybz.common.JsonUtil;
import com.zjrc.zsyybz.common.LogUtil;
import com.zjrc.zsyybz.common.NetworkUtil;
import com.zjrc.zsyybz.common.ProcessDlgAction;
import com.zjrc.zsyybz.common.ProcessDlgAction.onProcessDialogListener;
import com.zjrc.zsyybz.data.DiagnosisCost;
import com.zjrc.zsyybz.data.SaveDataGlobal;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.TextView;
/**@author Administrator
* 张松
*/
public class ZhenJianAccountActivity extends BaseActivity{
private TextView tv_waitpayMoney, tv_allpayMoney;
private int white = 0;//getResources().getColor(R.color.android_white);
private int blue = 0;//getResources().getColor(R.color.titlebar_bg);
private ExpandableListView costExpandableListView;
private final List<Date> groupDateList = new ArrayList<Date>();
private final List<List<DiagnosisCost>> dialogCostList = new ArrayList<List<DiagnosisCost>>();
private DiagnosisCostAdapter diagnosisCostAdapter=null;
private final ProcessDlgAction processObj = new ProcessDlgAction();
protected AsyncTaskManager2 sockMngObj2 = new AsyncTaskManager2();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.zhenjianaccount);
white = getResources().getColor(R.color.android_white);
blue = getResources().getColor(R.color.titlebar_bg);
setTitle("诊间结算");
initView();
try {
fillData();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void initView(){
tv_waitpayMoney=(TextView) findViewById(R.id.tv_waitpayMoney);
tv_allpayMoney=(TextView) findViewById(R.id.tv_allMoney);
costExpandableListView=(ExpandableListView) findViewById(R.id.expandableListView);//红色表示正确的@+xxxx
costExpandableListView=(ExpandableListView) findViewById(R.id.expandableList);
如果是引用蓝色的地方,就会报下面的空指针异常。
diagnosisCostAdapter=new DiagnosisCostAdapter(ZhenJianAccountActivity.this, groupDateList, dialogCostList);
costExpandableListView.setAdapter(diagnosisCostAdapter);
//等待结算
tv_waitpayMoney.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv_waitpayMoney.setTextColor(white);
tv_waitpayMoney.setBackgroundResource(R.drawable.tab_choosed);
tv_allpayMoney.setTextColor(blue);
tv_allpayMoney.setBackgroundResource(R.drawable.tab_default);
}
});
//全部
tv_allpayMoney.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv_allpayMoney.setBackgroundResource(R.drawable.tab_choosed);
tv_allpayMoney.setTextColor(white);
tv_waitpayMoney.setBackgroundResource(R.drawable.tab_default);
tv_waitpayMoney.setTextColor(blue);
}
});
costExpandableListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
DiagnosisCost dcost = dialogCostList.get(groupPosition).get(childPosition);
Bundle bundle = new Bundle();
bundle.putSerializable("diagnosiscost", dcost);
Intent intent = new Intent(ZhenJianAccountActivity.this, ZhenJianDetailActivity.class);
intent.putExtra("data", bundle);
startActivity(intent);
return true;
}
});
}
private void fillData() throws ParseException {
groupByDate(initData());
diagnosisCostAdapter.notifyDataSetChanged();
for (int i = 0; i < diagnosisCostAdapter.getGroupCount(); i++) {
costExpandableListView.expandGroup(i);
}
}
private List<DiagnosisCost> initData() throws ParseException {
List<DiagnosisCost> dCostList = new ArrayList<DiagnosisCost>();
DiagnosisCost dcost = new DiagnosisCost();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
dcost.setAddDate(sdf.parse("2015-05-11"));
dcost.setCost(10.00f);
dcost.setCostType("诊疗费用");
dcost.setDepartmentName("骨科");
dcost.setPayStatus("未付费");
dCostList.add(dcost);
DiagnosisCost dcost1 = new DiagnosisCost();
dcost1.setAddDate(sdf.parse("2014-09-22"));
dcost1.setCost(50.00f);
dcost1.setCostType("诊疗费用");
dcost1.setDepartmentName("消化内科");
dcost1.setPayStatus("未付费");
dCostList.add(dcost1);
DiagnosisCost dcost2 = new DiagnosisCost();
dcost2.setAddDate(sdf.parse("2014-09-22"));
dcost2.setCost(50.00f);
dcost2.setCostType("诊疗费用");
dcost2.setDepartmentName("风湿免疫门诊");
dcost2.setPayStatus("已付费");
dCostList.add(dcost2);
DiagnosisCost dcost3 = new DiagnosisCost();
dcost3.setAddDate(sdf.parse("2015-09-22"));
dcost3.setCost(50.00f);
dcost3.setCostType("诊疗费用");
dcost3.setDepartmentName("风湿免疫门诊");
dcost3.setPayStatus("已付费");
dCostList.add(dcost3);
return dCostList;
}
这就是异常错误信息
AndroidRuntime(1526): FATAL EXCEPTION: main
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zjrc.zsyybz/com.zjrc.zsyybz.activity.ZhenJianAccountActivity}: java.lang.NullPointerException
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.os.Handler.dispatchMessage(Handler.java:99)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.os.Looper.loop(Looper.java:130)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.app.ActivityThread.main(ActivityThread.java:3683)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at java.lang.reflect.Method.invokeNative(Native Method)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at java.lang.reflect.Method.invoke(Method.java:507)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at dalvik.system.NativeStart.main(Native Method)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): Caused by: java.lang.NullPointerException
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at com.zjrc.zsyybz.activity.ZhenJianAccountActivity.initView(ZhenJianAccountActivity.java:69)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at com.zjrc.zsyybz.activity.ZhenJianAccountActivity.onCreate(ZhenJianAccountActivity.java:53)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
07-19 05:29:37.661: ERROR/AndroidRuntime(1526): ... 11 more
07-19 05:29:37.680: WARN/ActivityManager(849): Force finishing activity com.zjrc.zsyybz/.activity.ZhenJianAccountActivity
07-19 05:29:37.680: WARN/ActivityManager(849): Force finishing activity com.zjrc.zsyybz/.activity.HomepageActivityGrid
07-19 05:29:38.190: WARN/ActivityManager(849): Activity pause timeout for HistoryRecord{b6785640 com.zjrc.zsyybz/.activity.ZhenJianAccountActivity}
07-19 05:29:39.520: INFO/Process(1526): Sending signal. PID: 1526 SIG: 9
07-19 05:29:39.531: INFO/ActivityManager(849): Process com.zjrc.zsyybz (pid 1526) has died.
07-19 05:29:39.531: WARN/ActivityManager(849): Scheduling restart of crashed service com.zjrc.zsyybz/.service.NoticeService in 5000ms
07-19 05:29:39.531: INFO/WindowManager(849): WIN DEATH: Window{b67741c0 com.zjrc.zsyybz/com.zjrc.zsyybz.activity.HomepageActivityGrid paused=true}
07-19 05:29:39.531: INFO/WindowManager(849): WIN DEATH: Window{b68a5fc0 com.zjrc.zsyybz/com.zjrc.zsyybz.activity.HomepageActivityGrid paused=true}
07-19 05:29:39.590: WARN/InputManagerService(849): Got RemoteException sending setActive(false) notification to pid 1526 uid 10031
07-19 05:29:42.911: INFO/ActivityManager(849): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zjrc.zsyybz/.activity.StartupActivity } from pid 943
07-19 05:29:42.920: INFO/ActivityManager(849): Start proc com.zjrc.zsyybz for activity com.zjrc.zsyybz/.activity.StartupActivity: pid=1544 uid=10031 gids={1007, 3003, 1015, 1006}