Android: android.R.id.content ใช้ทำอะไร?


141

ใครสามารถอธิบายความหมายของ "android.R.id.content" ได้บ้าง

มันถูกใช้อย่างไร?

http://developer.android.comไม่มีคำอธิบายใด ๆ

เนื้อหา int คงที่สุดท้ายสาธารณะ
ตั้งแต่: API ระดับ 1

ค่าคงที่: 16908290 (0x01020002)


94
android.R.id.contentให้องค์ประกอบรูทของมุมมองแก่คุณโดยไม่ต้องทราบชื่อ / ประเภท / ID จริง ลองดูstackoverflow.com/questions/4486034/…
Philipp Reichart

2
สิ่งนี้มีประโยชน์ในการทำธุรกรรมแฟรกเมนต์เช่น: mFragmentTransaction.add (android.R.id.content, myFragment);
IgorGanapolsky

@IgorGanapolsky แอพตัวอย่างทำธุรกรรมประเภทนี้ในเงื่อนไข: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}คุณช่วยบอกได้ไหมว่าViewองค์ประกอบรูทคืออะไร
Solace

@Zarah คุณแน่ใจหรือว่าไวยากรณ์ของคุณถูกต้องและสามารถคอมไพล์ได้?
IgorGanapolsky

คลาสของโครงร่างเกี่ยวข้องกับandroid.R.id.content อะไร?
Sushant

คำตอบ:


100

ขณะที่ฟิลิปป์ Reichart แสดงความคิดเห็น :

android.R.id.contentให้องค์ประกอบรูทของมุมมองแก่คุณโดยไม่ต้องทราบชื่อ / ประเภท / ID จริง ตรวจสอบhttp://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity


5
ตัวอย่างการใช้งานจริงสามารถพบได้ในวรรค 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1

4
"ให้องค์ประกอบรูทของมุมมองแก่คุณโดยไม่ต้องรู้ชื่อ / ชนิด / ID จริงของมัน" มันจะรู้ได้อย่างไรว่ามุมมองใดที่เราต้องการให้องค์ประกอบอิลิเมนต์ของ
Solace

22

android.R.id.contentค่า ID บ่งชี้ของพื้นที่เนื้อหาทั้งหมดของViewGroupActivity

มันสามารถใช้กับFragment:

public class MyActivity extends Activity {

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

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, MyFragment.newInstance())
                .commit();
        }
    }

    ...

}

โค้ดข้างต้นจะแทรกViewที่สร้างขึ้นโดยFragmentเข้าสู่ระบุViewGroupandroid.R.id.content


9

นักออกแบบของ Google พัฒนา Android UX ด้วยแนวทางการออกแบบเฉพาะหรือที่แนะนำ เค้าโครง android.R.id.content กำหนดlinearlayoutด้วยคุณลักษณะบางอย่างที่ Android เชื่อว่าเป็นมาตรฐานที่ดี

ดังนั้นการโหลดมุมมองรูทของ Fragment Manager ด้วย android.R.id.content ทำให้มั่นใจได้ว่าแนวทางเหล่านี้จะถูกนำไปใช้

หมายเหตุ: โครงร่างนี้ได้ตั้งค่าคุณลักษณะ: android: addStatesFromChildren = "true"เพื่ออนุญาตให้แฟรกเมนต์ย่อยเขียนทับแอ็ตทริบิวต์ในรูทนี้

ตั้งแต่เวอร์ชัน 19, android.R.id.content ถูกกำหนดไว้ในไฟล์: auto_complete_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/content"
    android:orientation="vertical"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:background="@android:drawable/edit_text"
    android:divider="@android:drawable/divider_horizontal_textfield"
    android:addStatesFromChildren="true">
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.