2014-04-03 4 views
0

내 프래그먼트 클래스에서 널 포인터 예외 오류가 발생했습니다. 내 프로그램에서 탭 활동을 사용하여 목록보기 조각 XML 파일에 있습니다. 코드 :널 포인터 예외 오류 android

package com.example.timetracker; 

import /// 


public class MainActivity extends FragmentActivity implements 
ActionBar.TabListener, LoaderCallbacks<Cursor> { 

    private static String TAG = "MainActivity"; 
    private static final int CM_DELETE_ID = 1; 
    private static final int RESET_STOPWATCH = 2; 
    static ListView lvData; 
    static DB db; 
    static SimpleCursorAdapter scAdapter; 
    static Activity act; 

    SectionsPagerAdapter mSectionsPagerAdapter; 
    ViewPager mViewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     //create my tabs... 
     } 
    } 


    //some code... 

     @Override 
     public Fragment getItem(int position) { 
      // getItem is called to instantiate the fragment for the given page. 
      // Return a DummySectionFragment (defined as a static inner class 
      // below) with the page number as its lone argument. 
      if(position == 0){ 
       Fragment fragment = new DummySectionFragment(); 
       Bundle args = new Bundle(); 
       args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
       fragment.setArguments(args); 
       return fragment; 
      } 

      if (position == 1) 
      { 
       Fragment fragment2 = new DummySectionFragment2(); 
       Bundle args = new Bundle(); 
       args.putInt(DummySectionFragment2.ARG_SECTION_NUMBER, position + 2); 
       fragment2.setArguments(args); 
       return fragment2; 
      } 
      return null; 

     } 


     @Override 
     public int getCount() { 
      return 2; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      switch (position) { 
      case 0: 
       return getString(R.string.title_section1).toUpperCase(l); 
      case 1: 
       return getString(R.string.title_section2).toUpperCase(l); 
      } 
      return null; 
     } 

    } 

    public static class DummySectionFragment extends Fragment{ 

     public static final String ARG_SECTION_NUMBER = "section_number"; 
     public DummySectionFragment() { 
     } 

     View v; 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.activity_tracker, 
        container, false); 
      v = inflater.inflate(R.layout.activity_statistic, 
        container, false); 
      createList(); 
      return rootView; 
     } 

     public void createList(){ 
      db = new DB(act);Log.d(TAG, "1"); 
      db.open();Log.d(TAG, "2"); 

      String[] from = new String[] {DB.COLUMN_NAME, DB.COLUMN_TIME };Log.d(TAG, "3"); 
      int[] to = new int[] { R.id.tvTextName, R.id.tvText_time};Log.d(TAG, "4"); 

      scAdapter = new SimpleCursorAdapter(act, R.layout.item, null, from, to, 0);Log.d(TAG, "5"); 
      lvData = (ListView) v.findViewById(R.id.lvData);Log.d(TAG, "6 "); 
        //after thap i have error 
      lvData.setAdapter(scAdapter);Log.d(TAG, "7"); 
     } 
    } 

    public static class DummySectionFragment2 extends Fragment implements LoaderCallbacks<Cursor> { 
      //some code.... 
      } 


     @Override 
     public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onLoaderReset(Loader<Cursor> arg0) { 
      // TODO Auto-generated method stub 

     } 
    } 

    //Data base class 
    static class MyCursorLoader extends CursorLoader { 

     DB db; 

     public MyCursorLoader(Context context, DB db) { 
      super(context); 
      this.db = db; 
     } 

     @Override 
     public Cursor loadInBackground() { 
      Cursor cursor = db.getAllData(); 
      return cursor; 
     } 

    } 

} 

작업 코드 "lvData.setAdapter (scAdapter); Log.d (TAG,"7 ");" 로그 :

04-03 20:11:54.830: D/dalvikvm(1684): GC_FOR_ALLOC freed 97K, 6% free 2883K/3040K, paused 9ms, total 9ms 
04-03 20:11:54.850: D/MainActivity(1684): 1 
04-03 20:11:54.850: D/Data Base(1684): Открытие Подключения 
04-03 20:11:54.858: D/Data Base(1684): Подключение открыто 
04-03 20:11:54.858: D/MainActivity(1684): 2 
04-03 20:11:54.858: D/MainActivity(1684): 3 
04-03 20:11:54.858: D/MainActivity(1684): 4 
04-03 20:11:54.858: D/MainActivity(1684): 6 
04-03 20:11:54.858: D/MainActivity(1684): 5 
04-03 20:11:54.858: D/AndroidRuntime(1684): Shutting down VM 
04-03 20:11:54.858: W/dalvikvm(1684): threadid=1: thread exiting with uncaught exception (group=0xa4c41648) 
04-03 20:11:54.858: E/AndroidRuntime(1684): FATAL EXCEPTION: main 
04-03 20:11:54.858: E/AndroidRuntime(1684): java.lang.NullPointerException 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at com.example.timetracker.MainActivity$DummySectionFragment.createList(MainActivity.java:200) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at com.example.timetracker.MainActivity$DummySectionFragment.onCreateView(MainActivity.java:187) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.view.ViewPager.populate(ViewPager.java:1068) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.view.ViewPager.populate(ViewPager.java:914) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.View.measure(View.java:15848) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.View.measure(View.java:15848) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.View.measure(View.java:15848) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.View.measure(View.java:15848) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.Choreographer.doFrame(Choreographer.java:532) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.os.Handler.handleCallback(Handler.java:730) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.os.Looper.loop(Looper.java:137) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at java.lang.reflect.Method.invoke(Method.java:525) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
04-03 20:11:54.858: E/AndroidRuntime(1684):  at dalvik.system.NativeStart.main(Native Method) 
+0

이 코드 줄에는 무엇이 있습니까 : 'MainActivity.java : 187'? –

+0

'act'는 어디에도 초기화되지 않았다고 생각합니다. 권리? 그래서, db = new DB (act);'db'를 null로 만듭니다. –

+0

예, lvData = (ListView)를 호출하면 – kolodach

답변

0

v.findViewById(R.id.lvData);으로 전화하면 null이 반환됩니다. 이것은 v 구조에 어떤 뷰도 넣지 않았기 때문인 것으로 보입니다. 그런 다음 아래 줄에 null을 사용하려고합니다. 이것이 예외의 원인입니다.

+0

을 삭제하는 것을 잊지 않습니다. findViewById (R.id.lvData); Log.d (TAG , "6"); (v가없는) 오류가 있습니다 : "액티비티 유형에서 정적이 아닌 메소드 findViewById (int)에 대한 정적 참조를 만들 수 없습니다." – kolodach

+0

확실히. 그건 문제가 아니야. 당신은 아무 것도없는 구조를 가지고 있습니다. 당신은 그 구조에서 무엇인가를 끌어 내려고 노력하고 있으며, 당신은 아무것도 얻지 못하고 있습니다. 그런 다음 아무것도 사용하지 않으려 고합니다. –

+0

hmmm 혼란스러워 함 = ( – kolodach