2011-10-06 5 views
0

화면 방향이 바뀌면 textview 배경색이 사라집니다. 은 TextView 정의입니다.안드로이드는 화면 회전시 TextView 배경색을 저장합니다.

<TextView 
    android:id="@+id/nomResult" 
    android:layout_width="fill_parent" 
    android:layout_height="80sp" 
    android:text="Nom result" 
    android:layout_below="@id/svitrkods" 
    android:layout_alignRight="@+id/svitrkods" 
    android:layout_above="@+id/exit_button" 
    android:freezesText="true" 
    /> 

앱은 인벤토리 앱입니다. 제품이 이미 인벤토리에있는 경우 텍스트가 빨간색 배경의 텍스트로 표시됩니다. vaiIrInvent.setBackgroundColor(0xfff00000);가 작동합니다. 그러나 화면이 회전하면 배경색이 사라집니다. 응용 프로그램 별이 표시되면 텍스트보기의 원래 배경색을 저장합니다. defBackColor = vaiIrInvent.getBackground(); 그런 다음 빨간색 또는 기본값으로 전환 중입니다.

if (isInInventory) 
{ 
    vaiIrInvent.setBackgroundColor(0xfff00000); 
} 
else 
{ 
    vaiIrInvent.setBackgroundDrawable(defBackColor); 
} 

아마도 android : freezesText와 같은 옵션이 있습니까? 감사합니다. .

답변

0

대답을 설명해야 당신이 기본 설정을 복원 할 정보를 저장해야합니다)에서 onCreate를 (전화 : 스캔 바코드 때 저장 화면 방향 변경

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    // Save entered code 
    savedInstanceState.putString("svkKods", svkKods.getText().toString()); 
    super.onSaveInstanceState(savedInstanceState); 
} 

및 복원 코드와 쿼리 db.

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    String mystr = savedInstanceState.getString("svkKods"); 
    svkKods.setText(mystr); 
    //if code presents 
    if (mystr.length() > 3) FindKods(mystr); //query database and fill all texts and variables 
} 

변수가 저장된 상태에서 바코드가 데이터베이스에서 발견되어 사용자가 변경 사항을 제출할 수 있기 때문에이 방법을 사용하고 있습니다. 그렇지 않으면 바코드를 찾아야하는 메시지가 표시됩니다 ...

0

기본적으로 OS는이 경우 새로운 Activity 인스턴스를 생성하기 때문에 회전시 isInInventory 상태가 손실 된 것으로 보입니다. 이 경우 가장 좋은 방법은 Activity 클래스가 노출하는 저장/복원 상태 콜백을 사용하는 것입니다. 자세한 내용은 Saving activity state을 확인하십시오.

1

넵의 rotion이다

이 링크가 내 상황에 좀 더 나은

Saving Android Activity state using Save Instance State

+0

이게 이미 발견되었으므로 Drawable 객체를 저장하는 방법을 찾고 있습니다. 내 문제가 조금 더 커졌다 고 생각합니다. 나는 2 개의 전망이 있기 때문에. 하나는 레이아웃 폴더에, 다른 하나는 레이아웃 랜드에 있습니다. 화면이 회전 할 때 배경이 설정되어 있으면 그림을 그려야하고 배경을 가로 레이아웃으로 전달해야합니다. 아니면 좋은 생각이 아닌가? – Guntis

+0

문제는 내가 생각하는 것보다 훨씬 큽니다. 화면이 회전하면 모든 변수가 사라집니다. 데이터베이스를 다시 쿼리하기 위해 edittext에 트리거 액션이 필요합니다. 내일 나는 몇몇 해결책을 찾기를 계속할 것이다. 변수 데이터는'onSaveInstanceState'에 저장할 수 있습니다. 물론 내가 가로 또는 세로로 응용 프로그램을 잠글 수 있지만 그 해결책을 좋아하지 않아 .. – Guntis

관련 문제