簡體   English   中英

fragment_main.xml和activity_main.xml之間的區別

[英]Difference between fragment_main.xml and activity_main.xml

我跟着這里的教程

https://developer.android.com/training/basics/firstapp/building-ui.html

我很困惑他們為什么要編輯fragment_main.xml而不是activity_main.xml。 在MainActivy.java文件中,onCreate()方法有一行說明

setContentView(R.layout.activity_main);

當我嘗試將其更改為時,為什么會抱怨

setContentView(R.layout.fragment_main);

任何指針將不勝感激。

活動是片段的容器,片段就像一個UI層,可以在執行時添加,修改或刪除。 同樣在活動布局中,您可以添加“靜態”片段。

如果交換布局,可能會導致錯誤的原因很多,也許您的活動代碼會嘗試引用一些不在片段布局中的視圖,反之亦然,活動布局可能會引用片段等...您可以根據需要為您的布局命名,但您需要設置與您的活動/片段中的代碼匹配的布局

你必須使用

setContentView(R.layout.activity_main);

在你的程序中,作為setContentView(R.layout.fragment_main); 在一個活動中使用不同碎片時使用

並且您收到錯誤,因為res文件夾中沒有名為fragment_main.xml的xml文件。

它只是名稱fragment_mainactivity_main如果你希望你也可以給你的GF:D名稱,

即,當您將布局文件添加到res / layout路徑時,條目將成為R.java中的佣人

假設你在res/layout創建main.xml ,當你清理你的項目時,一個條目R.layout.main將被添加到R.java它只是你給文件的名字。

可能是您收到錯誤,因為該文件不存在或者可能是該文件不包含布局。

兩者都是可選的。 但是,使用一種布局以避免混淆代碼總是更好。 在這種情況下,我將建議使用activity_main.xml並按照以下過程刪除fragment_activity.xml

1.正常的項目。

2.將fragment_main.xml復制到activity_main.xml (內容)。 然后刪除fragment_main.xml

3.在MainActivity.java刪除以下內容:

if (savedInstanceState == null) {
    getFragmentManager().beginTransaction()
            .add(R.id.container, new PlaceholderFragment()).commit();
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);
        return rootView;
    }
}

希望這有幫助

暫無
暫無

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

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