Uygulamanın başlangıç ​​etkinliğini değiştirme


386

Uygulamamın et ve bağırsaklarını oluşturdum, ancak başlangıç ​​noktası olacak farklı bir etkinlik eklemek istiyorum (bir tür giriş ekranı).

Birkaç soru:

  • 1 Etkinlikler arasında nasıl geçiş yapılacağına dair oldukça iyi bir tutuşum var (bu makaleye dayanarak: http://www.linux-mag.com/id/7498 ) ama yeni bir tane oluşturma konusunda nasıl emin olamıyorum ( tutulması ile) .

  • 2 Yeni bir etkinlik oluşturduktan sonra, bunu uygulamamın varsayılan etkinliği olarak nasıl ayarlayabilirim? Sınıfların adını değiştirebileceğimi sanıyorum ... ama bunun üstesinden gelmenin daha zarif bir yolu var mı (belki içinde AndroidManifest.xml)?

Yanıtlar:


660

Evet, AndroidManifest.xmldosyayı kullanıyorsunuz. Aslında uygulama bildiriminizde belirtilen birden fazla başlatıcı etkinliğiniz bile olabilir. Başlatıcıda bir etkinlik yapmak için, bu özellikleri manifest'teki etkinliğinize eklersiniz:

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

49
Bu yayının ne hakkında konuştuğunu bilmeyen herkes, projenizin kökündeki AndroidManifest.xml'dir. Eclipse'de, XML'i doğrudan düzenlemek için çift tıklayabilir ve en sağdaki sekmeyi tıklayabilirsiniz.
Austyn Mahoney

3
çok teşekkürler. Peki, bu niyet filtresi düğümünü alt düğümlerine ekleyerek, uygulama başladığında ilk yüklenen etkinliği yapar mı?
Kyle

4
@Kyle, o etkinliğin başlatıcı sayfasında görünmesini sağlayacaktır, ana ekranda birden çok simge veren bu niyet filtresiyle birden fazla etkinliğiniz olabilir.
Nathan Schwermann

3
Bu çizgiyi söz "ou aslında hatta uygulamanızda belirtilen birden fazla başlatıcısı aktiviteye sahip olabilir tezahür" .Hangi etkinlik olacak ilk fırlatma eğer elimizdeki birden fazla etkinlik
Tofeeq Ahmad

48
Bu doğru cevap, ancak garip bir şey fark ettim: başlangıç ​​Etkinliğini başka bir şeyle değiştirirseniz ve başlatılan orijinal etkinlik hala mevcutsa, SDK artık uygulamanızı başlatamaz. Her nasılsa, başlatma yapılandırmasındaki etkinliğe bir referansı vardır. Dolayısıyla, yukarıdaki değişikliği yaptıktan sonra, "Çalıştır"> "Hata Ayıklama Yapılandırmaları" na gitmeniz, projenizin derleme profilini bulmanız, "Android" sekmesini bulmanız ve başlatılan etkinliği "Başlat" altında varsayılan veya doğru olanı değiştirmeniz gerekir. :". Varsayılanın neden benim için seçili olmadığından emin değilim, ancak geri değiştirmek işe yaradı.
zeh

91

Projenizin kök klasöründeki AndroidManifest.xml dosyasına gidin ve önce yürütmek istediğiniz Etkinlik adını değiştirin.

Misal:

<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'da bu hala çalışmıyorsa, android simgesini (kelime uygulaması olanı) tıklamanız ve "Yapılandırmaları düzenle" yi seçmeniz, ardından Genel sekmesinde Etkinlik bölümünde "Varsayılan Etkinliği Başlat"
Silah'ı

47

Android Studio kullanıyorsanız ve daha önce başlatmak için başka bir Etkinlik seçtiyseniz .

Simgesine tıklayın Run > Edit configurationve ardından Varsayılan Etkinliği başlat'ın seçili olduğundan emin olun .

Varsayılan Etkinliği başlat


AndroidManifest.xml dosyasında başlatıcı için bir amaç filtresi yoksa, çözüm budur.
Amir Fazwan

1
Eclipse için de geçerlidir. Sadece niyet filtrelerini belirtmek yeterli değildir. Niyet filtreleri, APK doğrudan kullanıcı tarafından yürütülürse, ancak APK Eclipse tarafından yürütülürse, onu yükleyen belirli bir etkinlik başlatmaya çalışır. Bu özel aktivite "Proje özellikleri" nde belirtilir (projeye sağ tıklayın) -> Çalıştır / Hata Ayıklama Ayarları.
Iker Jamardo Zugaza

Bu harika! Tavsiye için teşekkürler
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

Aşağıdaki talimatları izleyin:

1 :) AndroidManifest.xmlDosyanızı açın .

2 :) Aşağıdaki gibi ana etkinliğinizi yapmak istediğiniz aktivite koduna gidin.

ana faaliyet olarak SplashScreen yapmak istiyorum gibi

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

3 :) Şimdi aşağıdaki kodu aynı etkinlik etiketleri arasında kopyalayın:

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

ayrıca yeni eklenen satırların diğer etkinlik etiketlerine eklenmediğini kontrol edin.


17

Bunu düzeltmek kolaydır.

  • Başlatıcı etkinliğindeki değişiklikler de Hata Ayıklama yapılandırmasında saklanır .
  • Ayarlara gidin Run > Debug Configurationsve düzenleyin.
  • Intellij'de , Varsayılan Etkinliği ÇalıştırRun > Edit Configurations seç altında benzer bir ayar vardır ve bu ayar artık bu şekilde kaydedilmez.

14

Basit. Bunu Manifestdosyanızda yapı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
<category android kaldırmalısınız: name = "android.intent.category.HOME" />
Behrouz.M

2
<category android:name="android.intent.category.DEFAULT" />, burada çalışmak çok şey
1111161171159459134

1
android.intent.category.HOMEvarsayılan başlatıcısının değiştirildiği Kiosk modu stili uygulamasında kullanım içindir. Bunu Başlatıcıyı değiştirmeden kullanmak, SystemUI'nin başlatılması sırasında hangi başlatıcıyı kullanacağını soran bir istemle sonuçlanır. Ayrıca bakınız: stackoverflow.com/questions/22911156/…
CJBS

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

AndroidManifest.xml dosyanıza gidin ve aşağıdaki gibi ekleyin

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

sonra android projenizi kaydedin ve çalıştırın.


3

Etkinliği başlatmak istediğiniz bunu android:exported="true"manifest dosyasında

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

Bu etkinliğin java dosyasını açın ve sağ tıklayın, ardından 'Ana Etkinlik'i Çalıştır'a tıklayın

VEYA

Bu etkinliğin java dosyasını açın ve Ctrl+ Shift+ tuşlarına basın F10.


Bunun nasıl bir etkisi var? Yeni mi başlıyorsunuz?
chia yongkang

2

Son bir projede AndroidManifest.xml'deki varsayılan etkinliği şu şekilde değiştirdim:

<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'da; bu kırılmış gibi görünüyor. Bu tekniği örnek uygulamalarda kullandım, ancak bu gerçek dünya uygulamasında kullandığımda düz düşüyor. IDE bir kez daha şunları bildiriyor:

Uygulama çalıştırılırken hata oluştu: Varsayılan etkinlik bulunamadı.

IDE hala araç çubuğundaki "uygulamayı çalıştır" alanında bir yapılandırma hatası gösterdi (bu ekran görüntüsünde sarı ok)

"Uygulama çalıştır" yapılandırmasında hata

Bu hatayı düzeltmek için birkaç proje yeniden denedim ve nihayet Dosya >> "Geçersiz Önbellek / Yeniden Başlat" . Bu yardımcı olmadı. Uygulamayı çalıştırmak için "Yapılandırmaları Düzenle" ve varsayılan etkinlik yerine belirli bir etkinliği işaret etmek zorunda kaldı :

Yapılandırmayı düzenle iletişim kutusu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.