2014-05-03 115 views
-2

我有一個SigninFragment和一個Button。點擊Button時,會向用戶顯示SignupFragment。我使用以下代碼執行FragmentTransaction,並希望SignupFragment替換SigninFragment,但SignupFragment出現在SigninFragment的下方。有人可以告訴我我做錯了什麼嗎?片段交易不隱藏

public void onClick(View v) { 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    WindowManager wm = getWindowManager(); 
    Display d = wm.getDefaultDisplay(); 
    SignUpFragment su = new SignUpFragment(); 
    fragmentTransaction.replace(R.id.SigningIn, su); 
    fragmentTransaction.commit(); 
} 

活動佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/bgmain" 
tools:context=".MainActivity" 
    android:layout_gravity="center" 
    android:focusableInTouchMode="true" 
android:orientation="vertical" 
    android:gravity="center"> 
     <fragment 
     android:id="@+id/SigningIn" 
     android:name=".SignInFragment" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center"/> 


</LinearLayout> 
+0

有可能是出錯了佈局。請在你的問題中編輯你的'Activity'的佈局。 –

+0

好的,我做了,現在你是什麼是我的問題? –

回答

0

爲了使片段是可更換的,它必須被編程方式添加 - 不經由XML。

請參閱here瞭解相關教程。

+0

我該怎麼做? –

+0

查看我的更新回答鏈接。 – cybersam

0

要創建通過代碼初始片段,而不是佈局:

設置在佈局的ID @+id/SigningIn的片段容器(通常是一個FrameLayout)代替您<fragment />標籤。

通過在ActivityonCreate()FragmentTransaction創建通過代碼最初的片段,當savedInstanceState爲空:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.content); 
    ... 

    if (savedInstanceState == null) { 
     SignInFragment f = new SignInFragment(); 
     getFragmentManager().beginTransaction().add(R.id.SigningIn, f).commit(); 
    } 
}