Thay đổi hoạt động bắt đầu của ứng dụng


386

Tôi đã tạo ra thịt và ruột của ứng dụng của mình nhưng tôi muốn thêm một hoạt động khác sẽ là điểm bắt đầu (loại màn hình đăng nhập).

Câu hỏi cặp đôi:

  • 1 Tôi có cách xử lý khá tốt về cách chuyển đổi giữa các hoạt động (dựa trên bài viết này: http://www.linux-mag.com/id/7498 ) nhưng tôi không chắc chắn cách tạo một hoạt động mới ( với nhật thực) .

  • 2 Khi tôi đã tạo một hoạt động mới, làm cách nào tôi có thể đặt hoạt động đó làm hoạt động mặc định cho ứng dụng của mình? Tôi đoán rằng tôi chỉ có thể thay đổi tên của các lớp ... nhưng có cách nào thanh lịch hơn để xử lý việc đó (có thể trong phạm vi AndroidManifest.xml) không?

Câu trả lời:


660

Có, bạn sử dụng các AndroidManifest.xmltập tin. Bạn thực sự thậm chí có thể có nhiều hơn một hoạt động launcher được chỉ định trong bảng kê khai ứng dụng của bạn. Để tạo một hoạt động được nhìn thấy trên trình khởi chạy, bạn thêm các thuộc tính này vào hoạt động của mình trong tệp kê khai:

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

49
Đối với bất kỳ ai không biết bản kê khai bài đăng này đang nói về điều gì, thì đó là AndroidManifest.xml trong thư mục gốc của dự án của bạn. Trong Eclipse, bạn có thể nhấp đúp vào nó và nhấp vào tab ở bên phải xa nhất để chỉnh sửa trực tiếp XML.
Austyn Mahoney

3
cảm ơn rất nhiều. Vì vậy, bằng cách bao gồm nút lọc ý định đó với các nút con của nó, điều đó làm cho bất kỳ hoạt động nào nó có trong hoạt động đầu tiên được tải khi ứng dụng khởi động?
Kyle

4
@Kyle nó sẽ làm cho hoạt động đó xuất hiện trên trang launcher, bạn có thể có nhiều hoạt động với bộ lọc ý định này cung cấp cho bạn nhiều biểu tượng trên màn hình chính.
Nathan Schwermann

3
bạn đề cập đến dòng này "ou thực sự thậm chí có thể có nhiều hơn một hoạt động launcher được chỉ định trong bảng kê khai ứng dụng của bạn". Hoạt động đầu tiên sẽ khởi chạy nếu chúng ta có nhiều hơn một hoạt động
Tofeeq Ahmad

48
Đây là câu trả lời đúng, nhưng tôi chỉ nhận thấy một điều kỳ lạ: nếu bạn thay đổi Hoạt động bắt đầu thành bất kỳ điều gì khác và hoạt động được khởi chạy ban đầu vẫn tồn tại, SDK sẽ không thể khởi chạy ứng dụng của bạn nữa. Bằng cách nào đó, nó có một tham chiếu đến hoạt động trên cấu hình khởi chạy. Vì vậy, sau khi bạn thực hiện thay đổi ở trên, bạn cũng cần chuyển đến "Chạy"> "Cấu hình gỡ lỗi", tìm hồ sơ xây dựng dự án của bạn, tab "Android" và thay đổi hoạt động đã khởi chạy thành mặc định hoặc chính xác trong "Khởi chạy : ". Không chắc chắn tại sao mặc định được bỏ chọn cho tôi, nhưng thay đổi lại nó hoạt động.
zeh

91

Truy cập AndroidManifest.xml trong thư mục gốc của dự án của bạn và thay đổi tên Hoạt động mà bạn muốn thực hiện trước tiên.

Thí dụ:

<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
Nếu với điều này vẫn không hoạt động trong Android Studio, bạn phải nhấp vào biểu tượng Android (biểu tượng có ứng dụng từ) và chọn "Chỉnh sửa cấu hình", sau đó trong tab Chung, phần Hoạt động chọn "Khởi chạy hoạt động mặc định"
Vũ khí X

47

Nếu bạn đang sử dụng Android Studio và trước đây bạn có thể đã chọn một Hoạt động khác để khởi chạy.

Nhấp vào Run > Edit configurationvà sau đó đảm bảo rằng Launch Activity Activity được chọn.

Khởi chạy Hoạt động mặc định


nếu trong AndroidManifest.xml không có bộ lọc ý định cho trình khởi chạy thì đây là giải pháp.
Amir Fazwan

1
Điều này cũng có thể áp dụng cho Eclipse. Chỉ xác định các bộ lọc ý định là không đủ. Các bộ lọc mục đích được sử dụng nếu APK được thực thi trực tiếp bởi người dùng, nhưng nếu APK được thực thi bởi Eclipse, cài đặt nó, sẽ cố gắng khởi chạy một hoạt động cụ thể. Hoạt động cụ thể này được chỉ định trong "Thuộc tính dự án" (nhấp chuột phải vào dự án) -> Cài đặt chạy / gỡ lỗi.
Iker Jamardo Zugaza

Thật đáng kinh ngạc! Cảm ơn vì tiền boa
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

Thực hiện theo các hướng dẫn dưới đây:

1 :) Mở AndroidManifest.xmltệp của bạn .

2 :) Chuyển đến mã hoạt động mà bạn muốn thực hiện hoạt động chính của mình như bên dưới.

chẳng hạn như tôi muốn biến SplashScreen thành hoạt động chính

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

3 :) Bây giờ sao chép mã dưới đây vào giữa các thẻ hoạt động giống như:

<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>

và cũng kiểm tra xem các dòng mới được thêm vào không được gắn với các thẻ hoạt động khác.


17

Điều này là dễ dàng để sửa chữa.

  • Các thay đổi đối với hoạt động Trình khởi chạy cũng được lưu trữ trong cấu hình Gỡ lỗi .
  • Đi đến Run > Debug Configurationsvà chỉnh sửa cài đặt.
  • Ngoài ra còn có một cài đặt tương tự trong Intellij trong phần Run > Edit ConfigurationsChọn Hoạt động mặc định và nó sẽ không còn lưu cài đặt theo kiểu này.

14

Thật đơn giản. Làm điều này, trong Manifesttập tin của bạn .

<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
bạn nên xóa <danh mục android: name = "android.intent.c
Category.HOME

2
<category android:name="android.intent.category.DEFAULT" />, đó là điều rất hiệu quả ở đây
1111161171159459134

1
android.intent.category.HOMEđược sử dụng trong ứng dụng kiểu Kiosk, trong đó trình khởi chạy mặc định được thay thế. Sử dụng cái này mà không thay thế Trình khởi chạy sẽ dẫn đến lời nhắc trong khi bắt đầu SystemUI hỏi nên sử dụng trình khởi chạy nào. Xem thêm: stackoverflow.com/questions/22911156/
Kẻ

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

5

Chỉ cần truy cập tệp AndroidManifest.xml của bạn và thêm như dưới đây

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

sau đó lưu và chạy dự án Android của bạn.


3

Bạn thêm cái này bạn muốn khởi chạy hoạt động android:exported="true"trong tệp kê khai như

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

Mở tệp java của hoạt động này và nhấp chuột phải, sau đó nhấp vào Chạy 'Hoạt động chính'

HOẶC LÀ

Mở tệp java của hoạt động này và nhấn Ctrl+ Shift+ F10.


Điều này có ảnh hưởng gì? Chỉ cần ra mắt?
chia yong Khang

2

Trong một dự án gần đây, tôi đã thay đổi hoạt động mặc định trong AndroidManifest.xml bằng:

<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>

Trong Android Studio 3.6; Điều này dường như bị phá vỡ. Tôi đã sử dụng kỹ thuật này trong các ứng dụng ví dụ, nhưng khi tôi sử dụng nó trong ứng dụng trong thế giới thực này, nó sẽ thất bại. IDE một lần nữa báo cáo:

Lỗi khi chạy ứng dụng: Không tìm thấy hoạt động mặc định.

IDE vẫn hiển thị lỗi cấu hình trong không gian "chạy ứng dụng" trên thanh công cụ (mũi tên màu vàng trong ảnh chụp màn hình này)

Lỗi trong cấu hình "chạy ứng dụng"

Để sửa lỗi này, tôi đã thử một số bản dựng lại của dự án và cuối cùng là Tệp >> "Bộ đệm / Khởi động lại không hợp lệ" . Điều này đã không giúp đỡ. Để chạy ứng dụng, tôi phải "Chỉnh sửa cấu hình" và chỉ vào hoạt động cụ thể thay vì hoạt động mặc định:

Chỉnh sửa hộp thoại cấu hình

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.