簡體   English   中英

替換FrameLayout布局中的片段

[英]Replace fragments in FrameLayout layout

我已經在Google第一頁上嘗試過有關android片段的所有教程,但是我什么都無法工作。

因此,我有一個導航欄活動MainActivity 現在,我想在抽屜中單​​擊更改片段。

在我的content_mainMainActivity活動中的默認片段)中,我有一個框架布局,希望將這些片段放入其中。我有以下片段: fragment_mainfragment_onefragment_two 我希望在單擊導航抽屜中的按鈕時顯示這些內容。

我要使用片段的原因是要使導航抽屜位於頂部。

提前致謝!

編輯:這是我將用來更改片段的功能:
這只是為了測試,而不是完成。

public void setFragment() {
    android.support.v4.app.FragmentTransaction transaction;
    transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.fragment_container, new LoginFragment());
    transaction.commit();
}

我解決了!

顯然,我不得不使用android.support.v4.app.Fragment; 而不是android.app.Fragment; 這是我可以使用的代碼:

protected void setFragment(Fragment fragment) {
    android.support.v4.app.FragmentTransaction t = getSupportFragmentManager().beginTransaction();
    t.replace(R.id.fragment_container, fragment);
    t.commit();
}

並進行設置(從導航欄onNavigationItemSelected() ,您可以執行以下操作:

setFragment(new RoosterFragment());

我希望這可以幫助其他人解決同樣令人沮喪的問題。

你有嘗試過嗎? 點擊這里

該鏈接將幫助您創建fragment 這就是您想要的導航抽屜 單擊此處

提出您的問題,

這是FrameLayout

<FrameLayout
        android:id="@+id/main_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/view"
        android:layout_marginTop="@dimen/medium_margin"></FrameLayout>

現在,調用您活動的displayview方法onCreate(),

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    //rest of your code here
    displayView(0); // fragment at 0 position
}

displayView方法 ,具有三個部分

public void displayView(int position) {
        switch (position) {
            case 0:
                tvTitle.setText(getResources().getString(R.string.signin_tile));
                showFragment(new LoginFragment(), position);
                break;
            case 1:
                tvTitle.setText(getResources().getString(R.string.forgot_password_tile));
                showFragment(new ForgotPasswordFragment(), position);
                break;
            case 2:
                tvTitle.setText(getResources().getString(R.string.change_password_tile));
                showFragment(new ChangePasswordFragment(), position);
                break;

        }
    }

showFragment方法從displayView方法調用,

public void showFragment(Fragment fragment, int position) {
        FragmentTransaction mTransactiont = getSupportFragmentManager().beginTransaction();

        mTransactiont.replace(R.id.main_container, fragment, fragment.getClass().getName());
        mTransactiont.commit();
    }

試試這個。 這是我的新手代碼,更容易理解:)

FragmentTransaction transaction;

switch (id){
            case R.id.button_fragment_one:
                    transaction = getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.frame_layout, new FragmentOne());
                    transaction.addToBackStack(null);
                    transaction.commit();
                break;
            case R.id.button_fragment_two:
                    transaction = getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.frame_layout, new FragmentTwo());
                    transaction.commit();
                break;
            default:
                break;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM