내 앱에서 이번 달 및 지난 두 달 간의 데이터를 표시해야합니다. 나는 이것을 위해 확장 가능한리스트 뷰를 사용하고있다. 하지만 널 포인터 예외가 나타납니다..put()의 ExpandableListView에있는 Null 포인터 예외
내 클래스 :
public class HistoryFragment extends Fragment {
HashMap<String,List<String>> months_parent;
List<String> child_list;
ExpandableListView exp_list;
monthAdapter adapter;
View v;
Calendar cal = Calendar.getInstance();
int y = cal.get(Calendar.YEAR);
SQLiteDatabase db;
DbHelper dbhelper;
public HistoryFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
v = inflater.inflate(R.layout.fragment_history, container, false);
exp_list = (ExpandableListView) v.findViewById(R.id.months);
String from[] = {DbHelper.NOTE, DbHelper.AMOUNT, DbHelper.MONTH, DbHelper.YEAR};
dbhelper = new DbHelper(getActivity());
db = dbhelper.getReadableDatabase();
List<String> curr = new ArrayList<String>();
List<String> currm1 = new ArrayList<String>();
List<String> currm2 = new ArrayList<String>();
int m = cal.get(Calendar.MONTH);
int n = m;
int last = m-2;
String noteamt;
double amt,totcurr=0.0,totcurrm1=0.0,totcurrm2=0.0;
Cursor c = db.query(DbHelper.TABLE_NAME, from, null, null, null, null,DbHelper.YEAR+" desc,"+DbHelper.MONTH+" desc");
c.moveToFirst();
if(c!=null)
{
while(c.moveToNext() && m>=last)
{
m=Integer.parseInt(c.getString(c.getColumnIndex(DbHelper.MONTH)));
amt = Double.parseDouble(c.getString(c.getColumnIndex(DbHelper.AMOUNT)));
//noteamt = c.getString(c.getColumnIndex(DbHelper.NOTE))+"("+c.getString(c.getColumnIndex(DbHelper.AMOUNT))+")";
noteamt = "Let's try this";
if(m==n)
{
curr.add(noteamt);
totcurr+=amt;
}
else if(m==n-1)
{
currm1.add(noteamt);
totcurrm1+=amt;
}
else if(m==n-2)
{
currm2.add(noteamt);
totcurrm2+=amt;
}
}
}
c.close();
String m1 = goswitch(n);
months_parent.put(m1+" ("+totcurr+")", curr); //exception here
String m2 = goswitch(n-1);
months_parent.put(m2+" ("+totcurrm1+")",currm1);//exception here
String m3 = goswitch(n-2);
months_parent.put(m3+" ("+totcurrm2+")", currm2); //exception here
child_list = new ArrayList<String>(months_parent.keySet());
adapter = new monthAdapter(getActivity(), months_parent, child_list);
exp_list.setAdapter(adapter);
return v;
}
String goswitch(int n)
{
String monthyr = null;
switch(n)
{
case 0:
return "January "+y;
case 1:
return "February "+y;
case 2:
return "March "+y;
case 3:
return "April "+y;
case 4:
return "May "+y;
case 5:
return "June "+y;
case 6:
return "July "+y;
case 7:
return "August "+y;
case 8:
return "September "+y;
case 9:
return "October "+y;
case 10:
return "November "+y;
case 11:
return "December "+y;
}
return monthyr;
}
}
내가 오류를 받고 있어요 여기서 사용 된 풋은 세 가지 라인.
11-09 21 : 11 : 여기서 로그 캣은 31.610 : E/AndroidRuntime (2683) FATAL EXCEPTION : 메인 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) 자바 .lang.NullPointerException 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : com.twistedlines.overbudget.HistoryFragment.onCreateView (HistoryFragment.java:104) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.support.v4.app.Fragment.performCreateView (Fragment.java:1500) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.support.v4 .app.FragmentManagerImpl.moveToState (FragmentManager.java:927) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1104) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.support.v4.app.BackStackRecord.run (BackStackRecord.java:682) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.support.v4.app .FragmentManagerImpl.execPendingActions (FragmentManager.java:1467) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.support.v4.app.FragmentManagerImpl $ 1.run (FragmentManager.java:440) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.os.Handler.handleCallback (Handler.java:615) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : at android.os.Handler.dispatchMessage (Handler.java:92) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.os.Looper.loop (Looper.java:137) 09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : android.app.ActivityThread.main (ActivityThread.java:4792) 11-09 21 : 11 : 31.610 : E/AndroidRuntime (2683) : java.lang.reflect.Method.invokeNative (네이티브 메소드)
무엇이 잘못되었는지 말해 줄 수 있습니까?
정말 고마워요. 어리석은 실수. – kray