2011-01-06 4 views
5

내 탭이있는 앱이 방향 변경으로보기를 다시 표시하지 않습니다. 안드로이드 오리엔테이션 변경

내가 메인 탭 활동 및 매니페스트에서 각 활동에

android:configChanges="keyboardHidden|orientation" 

을 추가했다. 발사 탭,리스트 버튼 및 텍스트 뷰에서

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    setContentView(R.layout.active_alt); 
    mColorLegendBtn = (Button) findViewById(R.id.colorbtn); 
    mStatusView = (TextView) findViewById(R.id.celltitle1); 
    TextView mStatusView1 = (TextView) findViewById(R.id.celltitle2); 
    mStatusView1.setText(mStatusView1.getText()+"testcase1"); 
    mStatusView.setText(mStatusView.getText()+"testcase"); 
    initUI(); 
} 

public void initUI() { 
    l1 = (ListView) findViewById(R.id.ListView01); 
    EfficientAdapter efficientAdapter = new EfficientAdapter(mContext); 
    l1.setAdapter(null); 
    l1.setAdapter(efficientAdapter); 
} 

가 정확하게 표시되어

I는 각각의 활동이 방법을 추가했다. 에뮬레이터의 방향을 변경하면 다른 위젯 중 탭이 표시되지 않고 화면이 검정색으로 표시됩니다.

무엇이 누락 되었습니까?

+0

나는 매우 비슷한 문제를 경험했으며 다른 해결 방법을 발견했습니다. 그것은 두 가지 다른 경우에 나타납니다. 내 질문보기 [여기] (http://stackoverflow.com/questions/8103639/android-orientation-change-causes-imageview-to-dissapear). –

답변

0

레이아웃이 가로/세로 모드에서 작동하지 않을 수 있습니까? 회전 후 앱을 시작해보세요. 동일한 결과가 표시되는지 확인하세요. 그렇다면 다음을 수행하십시오. 레이아웃을 수정하십시오. D

+0

앱이 두 방향에서 모두 작동합니다. 어느 방향 으로든 방향이 바뀌면 다시 표시되지 않습니다. – Tori

+0

탭 ... 활동 탭인 탭을 사용하고 있습니까? tabactivity에도 코드를 추가 했습니까? 어떤 onconfigchanged 함수가 호출되는지를 확인하기 위해 로깅을 추가 할 수 있습니다. – Nanne

+0

예, 저는 tabactivity에 onconfigchanged를 추가했으며, 로그를 통해 onconfigchanged는 탭 활동과 표시된 활동 모두에서 호출됨을 알 수 있습니다. 보기가 표시되지 않는 것이 문제입니다. – Tori

5

이 문제가 발생했습니다. 많은 시행 착오 끝에 마침내 매니페스트에 대한 한 줄짜리 변경으로 해결했습니다.

비결은 매니페스트에 TabActivity의 항목에

android:configChanges="orientation|keyboardHidden" 

를 추가하는 것입니다. 모든 어린이 활동을 혼자 둡니다. 심지어 TabActivity에도 적용되지 않고 을 구현하는 것을 신경 쓰지 마세요.

이것이 작동하는 방법이나 이유는 모르겠지만 레이아웃이 새로 고쳐지고 탭과 하위 작업 내용이 모두 새 방향으로 올바르게 다시 그려지는 효과가 있습니다. 성공으로

+1

고맙습니다. 이것은 아주 좋았습니다. 나를 위해 일했습니다 –

+0

그럼 우리가 라인 코드 위의 maifest로 작성한다면 layout-land 폴더에서 xml을 취하지 않을 것입니다. – RobinHood

1

나는 대부분의 컨트롤과 같이 별도의 XML로 가로 모드 레이아웃 XML을 만드는 것입니다 함께 가장 좋은 방법은 화면의 변화를 가질 것을 발견 :/레이아웃 /과/레이아웃 -를 사용하여

res/layout-land/youractivity.xml 

토지/귀하의 레이아웃뿐만 아니라 그레이엄 볼랜드 대답은 황금이다.

<activity android:name=".MainActivity" 
        android:label="@string/app_name" 
        android:screenOrientation="unspecified" 
        android:launchMode="standard" 
        android:configChanges="orientation|keyboardHidden" 
        > 

위의 스 니펫은 내 작업을 만든 것입니다. :)

가 오 내가 ...은 "지정은"그것이 최선이라고 생각 일을하도록 시스템을 허용 무엇

행운을 믿는다! OnConfigurationChanged()의 트리거에

[Activity (Label = "Viewer", ConfigurationChanges = ConfigChanges.Orientation|ConfigChanges.ScreenSize)] 

리드도 매니페스트를 변경하지만했다 :

+0

추가 할 것이 있습니까? res/layout-land/main.xml을 추가했지만 가로 모드에서는보기를 새로 고치지 않았습니다. 표시되는보기는 여전히 세로에 대한 레이아웃입니다. – exception01

+0

다음을 추가하십시오. android : screenOrientation = "unspecified" 여분의 속성을 추가하고 알려주십시오. –

1

13보다 큰 목표 API와 Android에 대한 Mono에서 나는 네임 스페이스 내에서 이동하지만 Activity class 외부 것이다 라인이 발견 아니.

관련 문제