2012-03-30 4 views
2

탭 콘텐츠가 조각 인 성공적으로 TabActivity를 FragmentActivity로 변환했습니다. 두 가지 문제가 있습니다 :Android FragmentActivity 및 탭 관련 문제

  1. 각 탭에 EditText가 있습니다. TAB1의 EditText 값을 변경하고 TAB2로 전환 한 다음 TAB1로 다시 전환하면 EditText의 값이 재설정됩니다.

  2. 내 탭 단편 중 하나에서 새 활동을 시작한 다음 기존 단편 활동으로 돌아 가면 탭 내용이 사라집니다. 에 관한 # 1 나는 조각에 모든 것을 변환 할 수있는 시간을 보낸 이유입니다 TabHost, ...

를 사용할 때 원래이 문제를 가지고 있었다, 나는 문제가 savedInstanceState과 관련이있다 있으리라 믿고있어.

또한
initialiseTabHost(savedInstanceState); 
if (savedInstanceState != null) { 
    mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab")); 
} 

가 여기 내 FragmentActivity의 내 onSaveInstanceState() 방법이다 : 나는 내 FragmentActivity의()에서 onCreate에서 다음을 사용하여, 구글의 example 정확히 따라

다음
protected void onSaveInstanceState(Bundle outState) { 
    outState.putString("tab", mTabHost.getCurrentTabTag()); 
    super.onSaveInstanceState(outState); 
} 

이 어떤 일 내 탭 조각 모양 :

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    if (container == null) { 
     return null; 
    } 

    return (LinearLayout) inflater.inflate(R.layout.priority_boxes_tab, 
      container, false); 
} 

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    setRetainInstance(true); 

    ArrayList<Supply> list = new ArrayList<Supply>(); 

    // More code here 

} 

다른 작업을해야합니까? 화면에 약 15 개의 EditText 필드가 있습니다. 어떻게 든 모든 값을 저장하고 다음 번에 그 값으로 필드를 다시 채울 수 있도록 설정해야합니까?

# 2와 관련하여 내가 할 수있는 다른 것을 알지 못합니다. 누구든지 어떤 제안이 있습니까?

감사합니다.

답변

2

첫 번째 문제 만 답변을 드릴 수 있습니다. 예. 복원하고자하는 경우 각 편집 텍스트의 내용을 수동으로 저장해야합니다. 응용 프로그램 실행간에 유지할 필요가없는 경우 onSaveInstanceState 번들에 저장하고 onCreate 및/또는 onRestoreInstanceState으로 복원하십시오. 값을 지속적으로 유지하려면 SharedPreferences을 사용하거나 다른 파일이나 데이터베이스에 값을 기록하십시오. 환경 설정이 아마도 가장 쉽습니다.

+0

나는 이것을 시험해 볼 것이다, 고마워. 각 탭에서 값을 기억하는 TabHost를 사용하는 것이 더 쉬웠지만 더 이상 사용하지 않는 것이 더 이상 사용되지 않습니다. 다행히도 각 탭에는 정적 번호의 EditText 필드가 있습니다. 그러나 EditText 필드의 동적 숫자로 어려워 질 것입니다 ... – littleK