2010-11-02 7 views
19

Mam ListActivity i MapActivity. Chciałbym uruchomić jedną z tych czynności podczas uruchamiania aplikacji, która została wybrana przez użytkownika w oknie preferencji.Czy mogę uruchomić różne czynności podczas uruchamiania w zależności od preferencji użytkownika?

Do tej pory jedynym sposobem widzę rozpocząć działalność przy starcie aplikacji jest określenie go w pliku manifestu aplikacji przy użyciu ...

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

myślę mogę zacząć działalność, który nie tylko patrzy na preferencje użytkownika, a następnie uruchamia ListActivity lub MapActivity. Wydaje się, że marnowanie czasu na działalność powoduje tylko uruchomienie innej działalności. W moich badaniach nie znalazłem żadnego rozwiązania tego problemu. Wszelkie sugestie będą bardzo mile widziane.

Dzięki & Pozdrowienia, Dave

+0

Myślę, że to jedyny sposób. Dopóki wszystko jest zrobione w działaniu onCreate tej wysyłki, włączając wywoływanie finish(), nie sądzę, że jest zbyt nieekonomiczne. –

Odpowiedz

18

Po pierwsze, nie stworzyć jakiś trzeci aktywność. Wystarczy mieć nazwę lub mapę, a następnie wywołać startActivity() na drugiej (plus finish()) w onCreate() przed wywołaniem setContentView(), gdy zajdzie taka potrzeba. W ten sposób ~ 50% czasu, uruchamiasz właściwą akcję.

Zasadniczo obie czynności mogą mieć wartość LAUNCHER<intent-filter>, umożliwiającą tylko jedną. Nie zadziała to jednak w przypadku skrótów na pulpicie, które będą prowadzić do określonej aktywności (w zależności od tego, która z nich została skonfigurowana po utworzeniu skrótu). Jeśli to Cię nie dotyczy, możesz iść tą drogą. Spróbuj jednak przetestować go na kilku urządzeniach i niestandardowych ekranach głównych - nie jestem pewien, czy wszyscy natychmiast przyjmą twoją zmianę.

+0

Dzięki za świetne opinie. Pójdę z twoim pierwszym rozwiązaniem, ponieważ jestem pewien, że większość użytkowników ustawi ich domyślnie na ListView. Ponadto nie w pełni rozumiem drugą opcję, ale najpierw brzmi to bardziej niż adekwatnie. Będę publikować aktualizację w ciągu tygodnia lub dwóch, kiedy mam ją w pełni wdrożoną. – Dave

+0

Właśnie dodałem ... – Dave

5

Właśnie dodałem następujący kod do metody onCreate() i działało jak charm.

Intent intent; 

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

dla nowych osób (mnie), poniżej znajduje się odpowiedź Dave'a oraz zmiany, które muszę wprowadzić w AndroidManifest.xml.

Główna działalność:

Intent intent; 

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

zmiany w pliku XML z ->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> 
Powiązane problemy