Tôi đã viết một vài ứng dụng Android, và đã luôn luôn tuyên bố bắt đầu Activity
như:Ứng dụng Android vs Hoạt động
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Nó sẽ là tuyệt vời cho Phạm vi một số phương pháp, tĩnh học, prefs chia sẻ toàn cầu, vv nếu tôi có thể khởi chạy ứng dụng của tôi bằng cách sử dụng Application
mà sau đó gọi Activity
đầu tiên từ số onCreate()
sau khi thiết lập prefs, v.v ... nhưng tôi không thể tìm thấy bất kỳ ví dụ nào về mẫu thiết kế này ... khi tôi thử mã này, tôi nhận được a ClassCastException
:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// do stuff (prefs, etc)
// start the initial Activity
Intent i = new Intent(this, InitialActivity.class);
startActivity(i);
}
}
InitialActivity.class
thực sự là một Activity
hoạt động tốt nếu tôi đặt thành MAIN
nhưng cố gắng khởi động từ MyApplication
được khai báo là MAIN
sẽ phát sinh lỗi. Có lẽ là một câu hỏi rất ngớ ngẩn, nhưng tôi có giải quyết tất cả điều này không?
Cảm ơn,
Paul
Bạn có nghĩa là bạn đang định nghĩa MyApplication là một hoạt động? Điều đó thực sự sẽ gây ra một ClassCastException. Vui lòng Android đã làm cho bạn những gì bạn muốn làm, nếu tôi hiểu chính xác những gì bạn muốn làm. Bạn chỉ cần đặt tên ứng dụng của bạn cho đường dẫn đó và tên của MyApplication. Nó sẽ được tạo trước khi Hoạt động của bạn, và sẽ có sẵn cho tất cả chúng. Như thế này:
Thú vị - làm cách nào để tôi truy cập các phương thức tùy chỉnh của ứng dụng từ một trong các Hoạt động? –
Từ bên trong Activity của bạn, bạn có thể xử lý ứng dụng như sau: getApplicationContext(), kết quả của nó, nếu nó được cấu hình như trên trong tệp kê khai của bạn, sẽ truyền tới MyApplication. –