2017-05-23 4 views
1

작업마다 조각을 대체하는 조각 컨테이너 활동이 있습니다. 한 조각에서 나는 응용 프로그램의 기본 색상을 변경할 수있는 옵션을 제공하고 있습니다. 따라서 사용자는 도구 모음 및 기타 구성 요소 색조를 변경할 수 있습니다. 하지만 테마를 적용한 후 기본 활동의 툴바가 새로운 색상 코드로 다시 초기화되도록 작업을 다시 만듭니다.작업 다시 생성 후 동일한 조각 열기

지금 내 문제는 내 응용 프로그램 순서> 사용자 설정> 테마 설정

설정처럼 그래서 사용자 변경 테마 전 재 작성 후 다시 같은 조각을 표시 할 때. 다른 질문도 보았고 논리도 적용했지만 나에게 도움이되지 않았습니다.

코드

getActivity().getSupportFragmentManager() 
    .beginTransaction() 
    .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left) 
    .addToBackStack(TAG) 
    .replace(R.id.container, fragment) 
    .commit(); 

하시기 바랍니다 사람이 도움을 테마 조각을 열고 테마를

private void setThemePreference(String primary, String primaryDark, String text) { 
    int requiredLength = 0; 

    if (primary.length() < 6) { 
     requiredLength = 6 - primary.length(); 

     for (int i = 0; i < requiredLength; i++) { 

      primary = "0" + primary; 
     } 
    } 

    if (primaryDark.length() < 6) { 
     requiredLength = 6 - primaryDark.length(); 

     for (int i = 0; i < requiredLength; i++) { 

      primaryDark = "0" + primaryDark; 
     } 
    } 

    if (text.length() < 6) { 
     requiredLength = 6 - text.length(); 

     for (int i = 0; i < requiredLength; i++) { 

      text = "0" + text; 
     } 
    } 

    UserPreferenceManager.preferencePutString(
     AppConstants.SharedPreferenceKeys.PrimaryColor,primary); 
    UserPreferenceManager.preferencePutString(
     AppConstants.SharedPreferenceKeys.PrimaryDarkColor, primaryDark); 
    UserPreferenceManager.preferencePutString(
     AppConstants.SharedPreferenceKeys.PrimaryTextColor, text); 
    UserPreferenceManager.preferencePutBoolean(
     AppConstants.SharedPreferenceKeys.IS_ThemeChanged, true); 

    TaskStackBuilder.create(getActivity()) 
     .addNextIntent(new Intent(getActivity(), MainActivity.class)) 
     .addNextIntent(getActivity().getIntent()) 
     .startActivities(); 

    // applied this also 
    //getActivity().recreate(); 

    getActivity().overridePendingTransition(0, 0); 
} 

코드를 변경합니다. 나는 경험이 많지 않고 새로운 개발자가 아니기도하다.

+0

코드에서 조각을 처리하는 방법을 보여줄 수 있습니까? –

+0

테마를 변경 한 후 다시 부모 작업을 호출하고 있습니까? –

+0

@PratikVyas 당신은 내가 조각을 여는 것을 의미합니까? –

답변

0

이제 활동을 다시 시작 의도를 사용하여, 당신은 is_theme 변경 저장 한대로 도움이 될 수 있습니다,이 시도

startActivity(new Intent(MainActivity.this,MainActivity.class)); 

테마가 변경되었는지 여부를 활동의 onResume 방법 확인에서 시작하거나 그렇지 않다면 변경된 후 단편을 호출하십시오.

@Override 
    protected void onResume() { 
     super.onResume(); 

     if(UserPreferenceManager.preferencePutBoolean(
       AppConstants.SharedPreferenceKeys.IS_ThemeChanged, true)){ 
      UserPreferenceManager.preferencePutBoolean(
       AppConstants.SharedPreferenceKeys.IS_ThemeChanged, false) 
      YourActivity activity = (YourActivity) getActivity(); 
      activity.goToSecondFragment(); 
     } 
    } 

메소드

public void goToSameFragment(){ 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    Fragment sameFragment = new sameFragment(); 
    ft.replace(R.id.fragment_container, sameFragment); 
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 
+0

만약 내가 이렇게한다면 조각의 배낭에 대해서. –

+0

백 스페이스 코드를 알려 드릴 것입니다. – Vasant

+0

백 스택을 유지하고 싶지 않습니까? –

관련 문제