เปลี่ยนกิจกรรมเริ่มต้นของแอปพลิเคชัน


386

ฉันสร้างเนื้อและความกล้าในแอปพลิเคชันของฉันแล้ว แต่ฉันต้องการเพิ่มกิจกรรมอื่นที่จะเป็นจุดเริ่มต้น (เรียงลำดับของหน้าจอเข้าสู่ระบบ)

คำถามคู่:

  • 1 ฉันมีมือจับที่ค่อนข้างดีเกี่ยวกับวิธีการสลับระหว่างกิจกรรม (ตามบทความนี้: http://www.linux-mag.com/id/7498 ) แต่ฉันไม่แน่ใจว่าจะทำอย่างไรในการสร้างกิจกรรมใหม่ ( กับคราส)

  • 2 เมื่อฉันสร้างกิจกรรมใหม่ฉันจะตั้งเป็นกิจกรรมเริ่มต้นของแอปพลิเคชันของฉันได้อย่างไร ฉันคิดว่าฉันสามารถเปลี่ยนชื่อคลาสได้ ... แต่มีวิธีที่สง่างามกว่านี้ในการจัดการกับมัน (อาจจะอยู่ในAndroidManifest.xml)

คำตอบ:


660

ใช่คุณใช้AndroidManifest.xmlไฟล์ คุณสามารถมีกิจกรรมของตัวเรียกใช้มากกว่าหนึ่งรายการที่ระบุในรายการแอปพลิเคชันของคุณ ในการสร้างกิจกรรมบนตัวเรียกใช้งานคุณเพิ่มแอตทริบิวต์เหล่านี้ในกิจกรรมของคุณในรายการ:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

49
สำหรับใครก็ตามที่ไม่ทราบว่ารายการที่โพสต์นี้พูดถึงคืออะไรมันเป็น AndroidManifest.xml ในรากของโครงการของคุณ ใน Eclipse คุณสามารถดับเบิลคลิกและคลิกที่แท็บทางด้านขวาสุดเพื่อแก้ไข XML โดยตรง
Austyn Mahoney

3
ขอบคุณมาก ดังนั้นโดยการรวมโหนดตัวกรองเจตนาเข้ากับโหนดลูกมันจะทำกิจกรรมใดในกิจกรรมแรกที่โหลดเมื่อแอปพลิเคชันเริ่มต้น
Kyle

4
@Kyle มันจะทำให้กิจกรรมนั้นปรากฏบนหน้าตัวเรียกใช้คุณสามารถมีหลายกิจกรรมด้วยตัวกรองความตั้งใจนี้ให้คุณหลายไอคอนบนหน้าจอหลัก
Nathan Schwermann

3
คุณพูดถึงบรรทัดนี้ "คุณสามารถมีกิจกรรมตัวเรียกใช้มากกว่าหนึ่งรายการที่ระบุไว้ในรายการแอปพลิเคชันของคุณ" กิจกรรมที่จะเปิดตัวครั้งแรกหากเรามีกิจกรรมมากกว่าหนึ่งกิจกรรม
Tofeeq Ahmad

48
นี่เป็นคำตอบที่ถูกต้อง แต่ฉันเพิ่งสังเกตเห็นสิ่งที่แปลก: ถ้าคุณเปลี่ยนกิจกรรมเริ่มต้นเป็นอย่างอื่นและกิจกรรมเดิมที่เปิดตัวยังคงมีอยู่ SDK จะไม่สามารถเปิดแอปพลิเคชันของคุณได้อีก ยังไงก็เถอะมันมีการอ้างอิงถึงกิจกรรมในการกำหนดค่าการเปิดตัว ดังนั้นหลังจากที่คุณทำการเปลี่ยนแปลงข้างต้นแล้วคุณยังต้องไปที่ "Run"> "Debug Configurations" ค้นหาโปรไฟล์การสร้างโครงการของคุณแท็บ "Android" และเปลี่ยนกิจกรรมที่เปิดใช้เป็นค่าเริ่มต้นหรือถูกต้องภายใต้ "เปิดตัว :" ไม่แน่ใจว่าทำไมค่าเริ่มต้นถูกยกเลิกการเลือกสำหรับฉัน แต่การเปลี่ยนกลับใช้งานได้
zeh

91

ไปที่ AndroidManifest.xml ในโฟลเดอร์รูทของโครงการของคุณและเปลี่ยนชื่อกิจกรรมที่คุณต้องการเรียกใช้ก่อน

ตัวอย่าง:

<activity android:name=".put your started activity name here"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

11
หากยังไม่สามารถใช้งานได้ใน Android Studio คุณต้องคลิกที่ไอคอน android (อันที่มีแอพคำศัพท์) และเลือก "แก้ไขการกำหนดค่า" จากนั้นในแท็บทั่วไปส่วนกิจกรรมเลือก "เปิดใช้กิจกรรมเริ่มต้น"
อาวุธ X

47

หากคุณใช้ Android Studio และคุณอาจเคยเลือกกิจกรรมอื่นที่จะเปิดตัวก่อนหน้านี้

คลิกที่Run > Edit configurationและจากนั้นตรวจสอบให้แน่ใจว่าได้เลือกกิจกรรมเริ่มต้นแล้ว

เรียกใช้กิจกรรมเริ่มต้น


หากใน AndroidManifest.xml ไม่มีตัวกรองความตั้งใจสำหรับตัวเรียกใช้นี่เป็นวิธีแก้ปัญหา
Amir Fazwan

1
สิ่งนี้ใช้ได้สำหรับ Eclipse เช่นกัน เพียงแค่ระบุตัวกรองเจตนาไม่เพียงพอ ตัวกรองเจตนาจะใช้หากผู้ใช้ดำเนินการ APK โดยตรง แต่ถ้า APK ดำเนินการโดย Eclipse ผู้ที่ติดตั้งจะพยายามเรียกใช้กิจกรรมที่เฉพาะเจาะจง กิจกรรมเฉพาะนี้ระบุไว้ใน "คุณสมบัติของโครงการ" (คลิกขวาที่โครงการ) -> เรียกใช้ / ตั้งค่าการดีบัก
Iker Jamardo Zugaza

มันอัศจรรย์มาก! ขอบคุณสำหรับเคล็ดลับ
Rafael Oliveira

30
 <application
    android:icon="@drawable/YOUR_ICON"    <!-- THIS ICON(IMAGE) WILL BE SHOWN IN YOUR APPS -->
    android:label="MY APP NAME " >    <!-- HERE LABEL(APP NAME) -->
    <activity
        android:name=".application's starting activity"  <!-- (.)dot means current dir, if your activity is in another package then give full package name ex: com.xxx.Activity  -->
        android:label="LABEL FOR ACTIVITY "
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

18

ทำตามคำแนะนำด้านล่าง:

1 :) เปิดAndroidManifest.xmlไฟล์ของคุณ

2 :) ไปที่รหัสกิจกรรมที่คุณต้องการทำกิจกรรมหลักเช่นด้านล่าง

เช่นฉันต้องการให้ SplashScreen เป็นกิจกรรมหลัก

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
</activity>

3 :) ตอนนี้คัดลอกโค้ดด้านล่างระหว่างแท็กกิจกรรมเช่นเดียวกับ:

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

และตรวจสอบด้วยว่าบรรทัดที่เพิ่มใหม่นั้นไม่ได้แนบมากับแท็กกิจกรรมอื่น ๆ


17

นี่เป็นเรื่องง่ายที่จะแก้ไข

  • การเปลี่ยนแปลงในกิจกรรมเปิดยังถูกเก็บไว้ในการกำหนดค่าตรวจแก้จุดบกพร่อง
  • ไปที่Run > Debug Configurationsและแก้ไขการตั้งค่า
  • นอกจากนี้ยังมีการตั้งค่าที่คล้ายกันในIntellijภายใต้Run > Edit Configurationsเลือกเรียกใช้กิจกรรมเริ่มต้นและจะไม่บันทึกการตั้งค่าในลักษณะนี้อีกต่อไป

14

มันง่ายมาก ทำสิ่งนี้ในManifestไฟล์ของคุณ

<activity
    android:name="Your app name"
    android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>

1
คุณควรลบ <category android: name = "android.intent.category.HOME" />
Behrouz.M

2
<category android:name="android.intent.category.DEFAULT" />นั่นคือสิ่งที่ทำงานได้ที่นี่
1111161171159459134

1
android.intent.category.HOMEสำหรับใช้ในแอปพลิเคชันลักษณะโหมด Kiosk ซึ่งจะมีการเปิดตัวเริ่มต้นแทน การใช้สิ่งนี้โดยไม่แทนที่ตัวเรียกใช้จะทำให้เกิดพรอมต์ในระหว่างการเริ่มต้นของ SystemUI เพื่อขอตัวเรียกใช้งาน ดูเพิ่มเติมได้ที่: stackoverflow.com/questions/22911156/…
CJBS


5

เพียงไปที่ไฟล์ AndroidManifest.xml ของคุณและเพิ่มไลค์ด้านล่าง

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

จากนั้นบันทึกและเรียกใช้โครงการ Android ของคุณ


3

คุณเพิ่มสิ่งนี้คุณต้องการที่จะเปิดตัวกิจกรรม android:exported="true"ในไฟล์รายการเช่น

 <activity
      android:name=".activities.activity.MainActivity"
      android:windowSoftInputMode="adjustPan"
      android:exported="true"/>
  <activity

เปิดไฟล์ java ของกิจกรรมนี้และคลิกขวาจากนั้นคลิกที่ Run 'กิจกรรมหลัก'

หรือ

java แฟ้มเปิดของกิจกรรมนี้และกดCtrl+ +ShiftF10


สิ่งนี้มีผลกระทบอะไรบ้าง เพิ่งเปิดตัว?
เจีย yongkang

2

ในโครงการล่าสุดฉันเปลี่ยนกิจกรรมเริ่มต้นใน AndroidManifest.xml ด้วย:

<activity android:name=".MyAppRuntimePermissions">
</activity>

<activity android:name=".MyAppDisplay">
    <intent-filter>
        <action android:name="android.intent.activity.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

ใน Android Studio 3.6; ดูเหมือนว่าจะเสีย ฉันใช้เทคนิคนี้ในตัวอย่างแอพพลิเคชั่น แต่เมื่อฉันใช้มันในแอพพลิเคชั่นในโลกแห่งความเป็นจริงมันก็ค่อนข้างแบน IDE รายงานอีกครั้ง:

เกิดข้อผิดพลาดในการเรียกใช้แอป: ไม่พบกิจกรรมเริ่มต้น

IDE ยังคงแสดงข้อผิดพลาดการกำหนดค่าในพื้นที่ "เรียกใช้แอป" ในแถบเครื่องมือ (ลูกศรสีเหลืองในภาพหน้าจอนี้)

ข้อผิดพลาดในการกำหนดค่า "เรียกใช้แอป"

เพื่อแก้ไขข้อผิดพลาดนี้ฉันได้พยายามหลายสร้างใหม่ของโครงการและในที่สุดก็ไฟล์ >> "โมฆะแคช / รีสตาร์ท" สิ่งนี้ไม่ได้ช่วย เมื่อต้องการเรียกใช้แอปพลิเคชันฉันต้อง"แก้ไขการกำหนดค่า"และชี้ไปที่กิจกรรมเฉพาะแทนที่จะเป็นกิจกรรมเริ่มต้น:

แก้ไขกล่องโต้ตอบการกำหนดค่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.