2010-11-02 17 views
19

Tôi có một ListActivity và MapActivity. Tôi muốn khởi chạy một trong các hoạt động này khi khởi động ứng dụng đã được người dùng chọn trong cửa sổ tùy chọn.Tôi có thể khởi chạy các Hoạt động khác nhau khi khởi động tùy theo sở thích của người dùng không?

Cho đến nay cách duy nhất tôi thấy để khởi động một hoạt động khi khởi động ứng dụng là để xác định nó trong ứng dụng file manifest sử dụng ...

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

Tôi nghĩ tôi có thể phải bắt đầu một hoạt động mà không không có gì ngoài việc xem xét các sở thích của người dùng và sau đó khởi chạy ListActivity hoặc MapActivity. Có vẻ như một sự lãng phí để có một hoạt động không làm gì ngoài việc khởi động một hoạt động khác. Trong nghiên cứu của tôi, tôi đã không tìm thấy bất kỳ giải pháp cho vấn đề này. Bất kỳ đề xuất sẽ được đánh giá rất cao.

Cảm ơn & Kính trọng, Dave

+0

Tôi nghĩ đó là cách duy nhất. Miễn là tất cả mọi thứ được thực hiện trong onCreate của hoạt động này Dispatch bao gồm gọi kết thúc(), tôi không nghĩ rằng nó quá lãng phí –

Trả lời

18

Thứ nhất, không tạo ra một số hoạt động thứ ba. Chỉ cần có LAUNCHERActivity là danh sách hoặc bản đồ và yêu cầu gọi số startActivity() trên số khác (cộng finish()) trong onCreate() trước khi gọi số setContentView() khi cần. Bằng cách đó, ~ 50% thời gian, bạn đang khởi chạy hoạt động phù hợp.

Về nguyên tắc, bạn có thể có cả hai hoạt động có LAUNCHER<intent-filter>, chỉ cho phép một hoạt động. Tuy nhiên, điều đó sẽ không hoạt động với các phím tắt trên máy tính để bàn, sẽ định tuyến đến một hoạt động cụ thể (tùy theo điều kiện nào xảy ra được định cấu hình khi chúng tạo lối tắt). Nếu điều này không liên quan đến bạn, bạn có thể đi tuyến đường này. Tuy nhiên, hãy thử kiểm tra nó bằng một vài thiết bị và màn hình chính tùy chỉnh - Tôi không chắc liệu mọi người sẽ nhận được thay đổi của bạn ngay lập tức hay không.

+0

Cảm ơn bạn đã phản hồi rất tốt. Tôi sẽ đi với giải pháp đầu tiên của bạn bởi vì tôi chắc chắn hầu hết người dùng sẽ đặt mặc định của họ vào ListView. Ngoài ra, tôi không hoàn toàn nắm bắt tùy chọn thứ hai, nhưng đầu tiên một âm thanh đầy đủ hơn. Tôi sẽ đăng một bản cập nhật trong một hoặc hai tuần khi tôi hoàn thành nó. – Dave

+0

Tôi vừa thêm .. – Dave

5

Tôi vừa thêm đoạn mã sau vào phương thức onCreate(), nó hoạt động như một nét duyên dáng.

Intent intent; 

    intent = new Intent(this, MyMap.class); 
    startActivity(intent); 
    finish(); 
0

cho người mới (tôi), sau đây là câu trả lời của dave, cộng với những thay đổi tôi cần để thực hiện cho AndroidManifest.xml.

hoạt động chính:

Intent intent; 

intent = new Intent(this, DisplayMessageActivity.class); 
startActivity(intent); 

thay đổi tập tin xml, từ ->http://developer.android.com/training/basics/firstapp/starting-activity.html

AndroidManifest.xml:

<activity 
     android:name="com.mycompany.myfirstapp.DisplayMessageActivity" 
     android:label="@string/title_activity_display_message" 
     android:parentActivityName="com.mycompany.myfirstapp.MyActivity" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.mycompany.myfirstapp.MyActivity" /> 
    </activity> 
Các vấn đề liên quan