2013-08-28 2 views
6

왼쪽에 내 단추가있는 두 개의 창 레이아웃이 있습니다. 버튼을 누르면 해당 부분이 오른쪽에 표시됩니다. 때로는 조각이 겹쳐 지지만 간헐적 인 문제입니다. 나는 모든 시간을 복제 할 수 있지만탭을 전환 할 때 조각이 때때로 겹칩니다.

public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.imageButtonSettingsManageBooks: 
     SettingsManageBooksFragment mbFragment = new SettingsManageBooksFragment(); 
     getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, mbFragment).addToBackStack(null).commit(); 
     mImgFragmentTitle.setImageResource(R.drawable.manage_my_books); 
     this.getSupportFragmentManager().executePendingTransactions(); 


     break; 
    case R.id.imageButtonSettingsPurchaseHistory: 
     SettingsPurchaseHistoryFragment phFragment = new SettingsPurchaseHistoryFragment(); 
     getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, phFragment).commit(); 
     mImgFragmentTitle.setImageResource(R.drawable.purchase_history); 
     this.getSupportFragmentManager().executePendingTransactions(); 

     break; 
    case R.id.imageButtonSettingsAudio: 
     SettingsAudioFragment aFragment = new SettingsAudioFragment(); 
     getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, aFragment).commit(); 
     mImgFragmentTitle.setImageResource(R.drawable.audio); 
     this.getSupportFragmentManager().executePendingTransactions(); 

     break; 
    case R.id.imageButtonSettingsRestore: 
     SettingsRestoreFragment rFragment = new SettingsRestoreFragment(); 
     getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, rFragment).commit(); 
     mImgFragmentTitle.setImageResource(R.drawable.restore); 
     this.getSupportFragmentManager().executePendingTransactions(); 

     break; 
    case R.id.imageButtonSettingsCopyright: 
     SettingsCopyrightFragment cFragment = new SettingsCopyrightFragment(); 
     getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, cFragment).commit(); 
     mImgFragmentTitle.setImageResource(R.drawable.copyright); 
     this.getSupportFragmentManager().executePendingTransactions(); 

     break; 
    case R.id.imageButtonSettingsAbout: 
     SettingsAboutFragment abFragment = new SettingsAboutFragment(); 
     getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, abFragment).commit(); 
     mImgFragmentTitle.setImageResource(R.drawable.about); 
     this.getSupportFragmentManager().executePendingTransactions(); 

     break; 

그것은 내가 중복의 원인이 될 수있는 새로운 조각 각 조각을 대체하고 있기 때문에 보이는 일이 아닙니다. 새로운 단편을 만들기 전에 모든 단편을 제거 할 수있는 방법이 있습니까?

+0

나는 (항상뿐만 아니라 대체 사용) 같은 문제가 받고 있어요,하지만 난 지원 라이브러리를 사용하고 있습니다. 편집 : 그것은 당신처럼 보이지만 getSupportFragmentManager 대신 getFragmentManager를 호출하고 있습니다 ... 그게 당신 문제일까요? 나와 마찬가지로, 우리가 재현 할 수없는 매우 간헐적 인 문제입니다. – StackOverflowed

+0

내 이전 댓글을 편집 할 수는 없지만 편집 2 : 문제가된다면 삼성 전자 갤럭시 S4가 발생했습니다. – StackOverflowed

+1

이 방법을 사용하면'remove solution'보다 다른 솔루션을 더 잘 사용할 수 있다고 생각합니다. '모든 xml 파일들 '에서 배경색을 정의해야한다. 문제가 해결 될 것이다 : 정의한 View 태그에이 android : background = "@ android : color/black"를 추가한다. –

답변

2

위에서 StackOverflowed에 언급 된대로 이것은 간헐적 인 문제입니다. 새 코드를 커밋하기 전에 기존의 조각을 제거하기 위해 자체 코드를 작성하여이 문제를 해결할 수있는 방법을 발견했습니다. 다음은 내 코드입니다 :

 fragmentManager = getFragmentManager(); 
     ft = fragmentManager.beginTransaction(); 

     mbFragment = new SettingsManageBooksFragment(); 
     ft.replace(R.id.setting_detail_container2, mbFragment).commit(); 
     mImgFragmentTitle.setImageResource(R.drawable.manage_my_books); 

    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.imageButtonSettingsManageBooks: 

      if (mPurchaseHistory == true) { 
       ft.remove(phFragment); 

       Log.d(TAG, "REMOVING PURCHASE HISTORY FRAG"); 

      } else if (mAudio == true) { 
       ft.remove(aFragment); 

       Log.d(TAG, "REMOVING AUDIO FRAG"); 
      } else if (mRestore == true) { 
       ft.remove(rFragment); 

       Log.d(TAG, "REMOVING RESTORE FRAG"); 
      } else if (mCopyright == true) { 
       ft.remove(cFragment); 

       Log.d(TAG, "REMOVING COPYRIGHT FRAG"); 
      } else if (mAbout == true) { 
       ft.remove(abFragment); 

       Log.d(TAG, "REMOVING ABOUT FRAG"); 
      } 
      ft = fragmentManager.beginTransaction(); 
      mbFragment = new SettingsManageBooksFragment(); 
      ft.replace(R.id.setting_detail_container2, mbFragment).commit(); 
      mImgFragmentTitle.setImageResource(R.drawable.manage_my_books); 
      mManageBooks = true; 
      mPurchaseHistory = false; 
      mAudio = false; 
      mRestore = false; 
      mCopyright = false; 
      mAbout = false; 

      break; 
관련 문제