Theory
एक screen के लिए दो files
आपकी FestConnect welcome screen को एक ख़ास तरह से दिखना है (एक title, एक Register button) और चीज़ें करनी हैं (button tap होने पर react करना)। Android जानबूझकर उन दो कामों को दो files में बाँट देता है।
Activity (एक Java class) screen का brain है: इसका behaviour। Layout (एक XML file) screen का face है: इसकी appearance। एक screen, दो files, code की एक line से जुड़ी हुई। यह split Android UI का पहला बड़ा idea है।
Theory
Stage और stage manager
एक play सोचिए। Set (painted backdrop, furniture placement) अलग से design और describe किया जाता है: वह XML layout है। Stage manager जो action cue करता है, events को react करता है, और show चलाता है वह Java में Activity है। Set act नहीं करता; manager scenery नहीं paint करता। उन्हें अलग रखना हर एक को दूसरे को disturb किए बिना बदलने देता है।
Theory
Activity और Layout, formally
- एक Activity app की एक screen है,
AppCompatActivityextend करती एक Java class। - इसका lifecycle `onCreate()` पर शुरू होता है, जो screen बनने पर call होता है।
- onCreate के अंदर आप `setContentView(R.layout.activity_main)` call करते हैं एक layout attach करने के लिए।
- एक Layout
res/layoutमें एक XML file है जो UI describe करती है: containers (LinearLayout) और widgets (TextView,Button)।
Look XML में रहता है; behaviour Java में रहता है। यही है separation of concerns।
Practical
activity_main.xml (look)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Welcome to FestConnect" />
</LinearLayout>Practical
MainActivity.java (behaviour)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// attach the XML layout to THIS screen
setContentView(R.layout.activity_main);
}
}Think first
दोनों files को कौन जोड़ता है?
आपके पास activity_main.xml (layout) और MainActivity.java (Activity) है। कौन सी अकेली line Java screen को actually वह XML display कराती है, और यह कहाँ जाती है?
Show the answer
Line setContentView(R.layout.activity_main);, जो super.onCreate(...) के बाद onCreate() के अंदर रखी जाती है। R.layout.activity_main आपकी XML file का एक generated reference है, और setContentView इसे screen पर inflate करता है। उस line के बिना, Activity चलती है पर एक blank screen दिखाती है, क्योंकि किसी ने इसे नहीं बताया कौन सा layout display करना है। onCreate वह जगह है जहाँ एक screen अपनी appearance wire करती है।
Quiz
Android में, Activity और Layout के बारे में कौन सा statement सही है?
- एक Activity Java में लिखी एक screen है; एक Layout XML में लिखी इसकी UI है
- एक Activity XML file है; एक Layout Java class है
- Activity और Layout दोनों XML में लिखे जाते हैं
- एक Activity में एक साथ कई unrelated screens होनी चाहिए
Show the answer
एक Activity Java में लिखी एक screen है; एक Layout XML में लिखी इसकी UI है
एक Activity एक Java class की तरह implement की गई एक अकेली screen है, और एक Layout उस screen की UI है XML में describe की गई (A)। Option B उन्हें swap कर देता है। Activity Java है, XML नहीं (C)। और एक Activity एक focused screen represent करती है, कई unrelated screens ठुँसी हुई नहीं (D)। साफ़ split, Java behaviour बनाम XML appearance, exactly वह है जो यह lesson establish करता है।
Watch out
Activity/Layout traps
1. setContentView भूलना: app चलती है पर screen खाली रहती है। हमेशा onCreate में एक layout attach कीजिए।
2. कौन सा कौन है मिला देना: Activity = Java (behaviour), Layout = XML (appearance)।
3. XML में logic डालना: XML सिर्फ़ UI describe करता है। Button clicks और data handling Java Activity में होते हैं (या एक onClick binding से), layout file के अंदर logic की तरह कभी नहीं।
Theory
अगला: पूरा project, और glue
आपने एक screen की दो files देख ली हैं। अगला lesson Android Studio में पूरा FestConnect project बनाता है, emulator पर 'Welcome' चलाता है, और बाकी components का tour करता है जो इसे एक app बनाते हैं, AndroidManifest.xml और auto-generated R.java सहित जो @+id/title को उस R.layout reference में बदलता है जो आपने अभी इस्तेमाल किया।
Summary
Key takeaways
- एक Activity app की एक screen है, एक Java class की तरह लिखी गई (AppCompatActivity extend करती है)।
- एक Layout उस screen की UI है, res/layout में XML में लिखी गई (containers + widgets)।
- onCreate() Activity का entry point है; setContentView(R.layout.activity_main) layout attach करता है।
- Appearance XML में रहता है, behaviour Java में: separation of concerns।
- setContentView भूलना screen को खाली छोड़ देता है।
- Memory hook: set (XML layout) और stage manager (Java Activity)।