2014-07-07 2 views
1

데이터베이스 업데이트가 완료된 후 조각에서 텍스트 뷰를 업데이트하려고합니다. 데이터베이스 업데이트 후 조각 업데이트 TextView

나는 MainFragment

MainFragment를 호스팅 MainActivity 내 데이터베이스에 열 A의 합이다 그 안에 텍스트 뷰를 가지고 있습니다.

MainActivity에는 데이터베이스의 열에 값을 추가 할 수있는 대화 상자가 열리는 키가 있습니다. 대화 상자가 조각의 맨 위에 나타나지만 확인을 눌러 해당 새 값을 데이터베이스에 보내면 업데이트되지 않는 텍스트 뷰를 업데이트하려고 시도합니다.

내 조각에는 다음과 같은 내용이 있지만 전화가 걸리지 않을 것으로 생각됩니다.

@Override 
    public void onResume() { 
     super.onResume(); 
     Log.d("onResume", "here"); 
     int balance = db.getSum(); 
     tvBalanceDollar.setText(Integer.toString(balance)); 
    } 

어디에서 db.getSum(); 및 대화 상자를 닫은 후 해당 필드를 업데이트하려면 setText?

편집 :

는 조각 적 일시 정지 얻을, 또는 활동에서 대화 후 다시보기가 닫혀 있습니까?

+0

왜 대화 상자를 클릭 할 때 텍스트보기 값을 설정하지 않습니까? 데이터베이스 작업은로드하기에 충분히 빠르며 데이터베이스에서 onResume 메서드 호출까지 해당 데이터를 다시 읽습니다. – dhams

답변

1

당신이 말했듯이, onResume()은 그것을 배치하는 최선의 방법이 아닙니다. 가장 좋은 방법은 startActivityForResult(intent, your_requestCode)을 사용하여 대화 상자 창을 시작해야한다고 생각합니다.

그런 다음, 데이터베이스에 값을 추가하고 활동으로 돌아가려면 완료 대화 상자에서 수행

setResult(RESULT_OK); 
finish(); 

그리고 다시 주요 활동 사용하여 onActivityResult에서()는 텍스트 뷰를 업데이트하려면 :

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case your_requestCode: { 
      //... 
      DO YOUR STUFF HERE 
     } 
     break; 
    } 
} 

주요 활동에서 프래그먼트의 텍스트 뷰를 업데이트하려면 콜백 인터페이스를 구현해야합니다. 그런 다음

public interface FragmentCallback { 
    public void modifyTextView(String text); 
} 

: 내부

FragmentCallback fragCall; 

이전에 onActivityResult를 주석 :

public class YourFragment extends Fragment implements FragmentCallback { 

그리고 내부 :

fragCall.modifyTextView(yourText); 

마지막으로 당신은 당신의 조각에 콜백 리스너를 구현 메토 d 텍스트 뷰의 텍스트를 변경합니다 :

@Override 
public void modifyTextView(String text) { 
    yourTextView.setText(text); 
} 
+0

완벽하게 작동했습니다! 정말 고맙습니다! – Rob

+0

당신을 환영합니다! – masmic

1

단편의 onStart 메소드를 무시하고 특정 textView를 호출하여 해당 메소드의 텍스트를 업데이트하십시오.

@Override 
public void onStart() { 
    super.onStart(); 
    textView.setText(/* update method */); 
    //TODO call your method here. 
} 
관련 문제