2014-09-25 3 views
0

PageViewer와 FragmentPageAdapter를 사용하여 스 와이프 가능한 탭 페이지를 구현하고 있습니다. 로그인 후 모든 조각을 변경하고 싶습니다.FragmentPageAdapter의 모든 조각을 바꾸는 방법

위의 소스 코드에서 "RegisterNewUser"메서드를 호출하면 다음 오류가 발생합니다. 여기서 내가 뭘 잘못하고 있니?

FATAL EXCEPTION: main 
java.lang.NullPointerException 
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:651) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) 
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472) 
    at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
    at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:892) 
    at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2805) 
    at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37) 
    at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276) 
    at com.flagmon.adapter.TabFragmentPagerAdapter.onLoginChangeRequest(TabFragmentPagerAdapter.java:132) 
    at com.flagmon.fragment.RegisterStep03Fragment.onTaskCompleted(RegisterStep03Fragment.java:189) 
    at com.flagmon.task.DownloadJSONObjectAsyncTask.onPostExecute(DownloadJSONObjectAsyncTask.java:38) 
    at com.flagmon.task.DownloadJSONObjectAsyncTask.onPostExecute(DownloadJSONObjectAsyncTask.java:1) 
    at android.os.AsyncTask.finish(AsyncTask.java:631) 
    at android.os.AsyncTask.access$600(AsyncTask.java:177) 
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5103) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    at dalvik.system.NativeStart.main(Native Method) 

답변

0

아래와 같이 소스 코드를 변경했습니다. 변경하고자하는 조각을 초기화하는 것을 잊어 버린 것처럼 보입니다.

public void onLoginChangeRequest() { 
    Log.d(this.toString(), "onLoginChangeRequest"); 
    FragmentTransaction transaction = mFragmentManager.beginTransaction(); 
    for (int i=1; i<getCount(); i++) 
    { 
     if (tabFragment[i] != null) { 

      transaction.remove(tabFragment[i]); 

      switch (i) { 
      case 1: 
      case 2: 
       tabFragment[i] = MapFragment.newInstance(this, i); 
       break; 
      case 3: 
       tabFragment[i] = MapFragment.newInstance(this, i); 
       break; 
      } 
     } 
    } 
    transaction.commit(); 
    notifyDataSetChanged(); 
} 
관련 문제