2016-06-07 2 views
0

조각을 변경 한 후 (아래 스 니펫 에서처럼) 해당보기 중 하나에 표시되는 텍스트를 업데이트하고 싶습니다.조각에서 텍스트 업데이트가 작동하지 않습니다.

Fragment fragment = new LoadingScreen(); 
String loadScreenTag = "FLSTAG"; 
getFragmentManager() 
    .beginTransaction() 
    .setCustomAnimations(R.animator.card_flip_right_in, R.animator.card_flip_right_out, 
          R.animator.card_flip_left_in, R.animator.card_flip_left_out) 
    .replace(R.id.main_activity_frame, fragment, loadScreenTag) 
    .commit(); 

LoadingScreen lScreen = (LoadingScreen) getFragmentManager().findFragmentByTag(loadScreenTag);      
lScreen.writeText("some text that does not work"); 

내부 LoadingScreen 나는 WRITETEXT 당신이, 내가 (조각이 화면 전체를 차지, 그래서 단지가 조각 사이에 변경할 수 card_flip 애니메이션을 사용하고 볼 수 있듯이

public void writeText(String msg) { 
     if (mainView != null) { 
      mainView.setText(msg); 
     } else { 
      Log.e(LOG_TAG, "mainView is null at this point"); 
     } 
    } 

를 정의 하나는 언제든지 볼 수 있음).

  1. 이전 조각이 다른 LoadingScreen 인 경우 코드가 작동하지 않습니다 (충돌/오류가없고 단순히 textView를 업데이트하지 않음).

    • 방금 ​​교체 한 LoadingScreen의 textView를 업데이트한다고 가정합니다. 왜 이런 일이 일어나는 걸까요?
  2. 이전 조각이 다른 조각이라면 작동하지만 불편할 정도로 느립니다. 왜 그렇게 느린가요?

+0

writeText()를 호출 할 때 조각보기가 아직 작성되지 않았습니다 (onCreateView) ... 호출하기 전에 Handler를 사용하여 몇 초간 기다려보십시오. 문제가 될 수 있습니다. – Jaythaking

답변

0

문자열을 조각에 전달한 다음 조각 안에 렌더링 할 수 있습니다. 그래서, 당신은 것입니다 : 당신의 LoadingScreen 조각 내부에 그런

Bundle bundle = new Bundle(); 
bundle.putString("STRING_KEY", "Some string that does not work"); 
Fragment fragment = new LoadingScreen(); 
fragment.setArguments(bundle); 

... 을 onCreateView에서 : 당신은 쉽게 당신이 팽창하는 뷰 그룹을 통해 oncreateview 내부 업데이트 할 텍스트 뷰에 액세스 할 수 있습니다

String myString = getArguments().getString("STRING_KEY"); 

. 그럼

yourTextView.setText(myString); 
관련 문제