2016-03-09 30 views
-1

從數據庫中檢索數據的代碼在擴展Activity的類中工作正常,但是當我將該類放入需要插入列表元素的類中時,該應用崩潰了,該類擴展片段。在Android Studio的片段類中使用遊標

package com.autohush.www.dah; 

    import android.app.Activity; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.database.Cursor; 
    import android.support.v4.app.Fragment; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ArrayAdapter; 
    import android.widget.Button; 
    import android.widget.ImageButton; 
    import android.widget.ImageView; 
    import android.widget.ListView; 
    import android.widget.TextView; 
    import android.widget.TimePicker; 
    import android.widget.Toast; 

    import java.util.ArrayList; 
    import java.util.List; 

    public class MainActivityFragment2 extends Fragment { 

    Context ctx = this.getActivity(); 
    private List<TimeList> TDList = new ArrayList<TimeList>(); 

    public MainActivityFragment2() { 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     populateLocationList(); 
    } 

    private void populateLocationList() { 
     DBoperations db = new DBoperations(ctx); 
     Cursor cr = db.getInformation(db); 
     cr.moveToFirst(); 
     String TimeH, TimeM; 
     do { 
      TimeH = Integer.toString(cr.getInt(1)); 
      TimeM = Integer.toString(cr.getInt(2)); 
      TDList.add((new TimeList(TimeH + ":" + TimeM,"1 hr"))); 
     }while (cr.moveToNext()); 
    } 

    private class MyAdapter extends ArrayAdapter<TimeList> { 

     public MyAdapter(Context context, List<TimeList> values) { 

      super(context, R.layout.time_list_item,values); 
     } 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      View v = convertView; 
      LayoutInflater inflater = LayoutInflater.from(getContext()); 

      if(v == null){ 
       v = inflater.inflate(R.layout.time_list_item, parent, false); 
      } 

      TimeList currLoc = TDList.get(position); 

      TextView theTextView = (TextView) v.findViewById(R.id.time_list_item_textview1); 
      theTextView.setText(currLoc.getTime()); 

      theTextView = (TextView) v.findViewById(R.id.time_list_item_textview2); 
      theTextView.setText(currLoc.getDuration()); 

      return v; 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.time_list_view, container, false); 

     ListView list = (ListView) rootView.findViewById(R.id.time_list_view); 
     ArrayAdapter<TimeList> adapter = new MyAdapter(getActivity(),TDList); 
     list.setAdapter(adapter); 
     setRetainInstance(true); 

     ImageButton ib = (ImageButton) rootView.findViewById(R.id.imageButton1); 
     ib.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivity(new Intent(MainActivityFragment2.this.getActivity(),TimePickerPopup.class)); 
      } 
     }); 

     return rootView; 
    } 

這是我的崩潰日誌...我是新來的android。請幫忙。

03-10 18:03:04.142 20856-20856/? E/AndroidRuntime: FATAL EXCEPTION: main 
               Process: com.autohush.www.dah, PID: 20856 
               java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference 
                at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223) 
                at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187) 
                at com.autohush.www.dah.DBoperations.getInformation(DBoperations.java:47) 
                at com.autohush.www.dah.MainActivityFragment2.populateLocationList(MainActivityFragment2.java:42) 
                at com.autohush.www.dah.MainActivityFragment2.onCreate(MainActivityFragment2.java:37) 
                at android.support.v4.app.Fragment.performCreate(Fragment.java:1951) 
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1029) 
                at android.support.v4.app.BackStackRecord.ensureFragmentsAreInitialized(BackStackRecord.java:1077) 
                at android.support.v4.app.BackStackRecord.beginTransition(BackStackRecord.java:1032) 
                at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:658) 
                at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) 
                at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
                at android.support.v4.view.ViewPager.populate(ViewPager.java:1177) 
                at android.support.v4.view.ViewPager.populate(ViewPager.java:1025) 
                at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1545) 
                at android.view.View.measure(View.java:17442) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
                at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:664) 
                at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:731) 
                at android.view.View.measure(View.java:17442) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
                at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) 
                at android.view.View.measure(View.java:17442) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
                at android.view.View.measure(View.java:17442) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
                at android.view.View.measure(View.java:17442) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
                at android.view.View.measure(View.java:17442) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
                at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560) 
                at android.view.View.measure(View.java:17442) 
                at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001) 
                at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166) 
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372) 
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) 
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) 
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
                at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
                at android.view.Choreographer.doFrame(Choreographer.java:550) 
               at android.view.Choreographer$FrameDisplayEve 
+2

什麼是崩潰日誌 –

回答

0

我找到了墜毀的原因。 上下文ctx = this.getActivity();不應該在開始時,因爲它否則返回一個空值。 它應該在onCreate()內。