2011-12-13 3 views
3

나는 조각이있는 활동이 있습니다.조각 및 취급 방향 변경

나는 방향이 자신을 변경 처리하고자하는, 그래서 내가 같이하는 매니페스트 업데이트 :

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     updateLayout(); 
    } 

:

<activity android:name="com.test.app" android:configChanges="orientation|keyboardHidden"/> 

그럼 내가 같이 할 수있는 활동을 업데이트

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     updateLayout(); 
    } 

    private void updateLayout() { 
     setContentView(R.layout.my_layout); 
    } 

또한 다음과 같이 조각을 사용합니다.

fragment.setRetainInstance(true); 

문제점은 화면 방향을 설정할 때 setContentView()에서 조각에 중복 ID가 있다는 오류가 발생한다는 것입니다. 아이디어가 어떻게 생기지 않는지 잘 모르는 아이디어 - 아이디어?

tia.

답변

1

이전 레이아웃을 버리지 말라고 했으므로 믿기 때문에 이전 버전의 레이아웃 (이 경우 새보기와 동일하므로 ID 충돌)이 여전히 남아 있습니다. .

또한, 나는 모르겠지만, 나는이 생각 :

fragment.setRetainInstance(true); 

이 필요하다? 여기에 있기 때문에 당신이 구성 변경에 활동을 다시하지 그것을 말해 : 내 경험에

android:configChanges="orientation|keyboardHidden" 

을 XML로 설정 configChanges 레크리에이션을 방지하기 충분하다.

편집 :

흠 당신이 조각을 사용하는 방법을 정확하게 다시 찾고? 같은 것을보고

class SomeActivity extends FragmentActivity 
{ 
    ... 
    @Override 
    public void onCreate(Bundle savedInstance) 
    { 
    ... 
     LayoutInflater inflater = getLayoutInflater(); 
     inflater.inflate(R.layout.some_fragment, root); 
    ... 
    } 
} 

그 XML로 : 여기에 게시 된 코드가 FragmentActivity에서 인 경우에, 나는 당신의 조각을 팽창하고 활동에 추가이 뭔가를 기대 some_fragment.xml을

<?xml version="1.0" encoding="utf-8"?> 
<fragment 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:name="com.someapp.fragments.SomeFragment"> 
</fragment> 

그래서 Fragments를 사용하는 방법이 명확하지 않다고 생각합니다. 그러나 XML 구성 설정을 사용하여 이러한 옵션을 사용하면 순환 게재시의 휴양 기능을 해제 할 수 있습니다.

+0

XML에 조각이 포함되어 있습니다. 따라서 하나를 부 풀려서 추가 할 필요가 없습니다 ... 맞습니까? – user645402

+0

나는 100 % 확실하지는 않지만 여기에있는 나의 방법은 매우 유연하고 완벽하게 작동한다고 믿습니다. – Adam