본문 바로가기
TIL, WIL(일기)

23.08.02 가정먼저 시작할 Activity를 설정하는 방법

by 도슬 2023. 8. 3.

문제점

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

앱을 실행했는데 보이는것처럼 두번째 액티비티 부터 실행 된다. 

 

class FirstActivity : AppCompatActivity() {
    val TAG = "FirstActivity_Lifrcycle"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_first)

        val btn = findViewById<Button>(R.id.btnFirstActivity)
        btn.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            startActivity(intent)
        }        
    }

분명히 나는 FirstActivity에서 버튼(btnFirstActivity)를 누르면 SecondActivity로 넘어가게 해줬는데 

앱만 실행하면 SecondActivity부터 시작하는데

엎친데 덮친격으로 SecondActivity에 있는 닫기 버튼을 누르면 앱이 종료된다.

아니 이건또 뭔?

 

순간 빡치긴했지만 오늘은 그래도 쉽고 빠르게 해결이 되었다.

아래 코드를 살펴 보자

<activity
    android:name=".SecondActivity"
    android:exported="true"
    android:label="Second Activity">
    <intent-filter>
        <action android:name="android.intent.action.DIAL" />
        <category android:name="android.intent.category.DEFAULT" />

        <data android:scheme="tel" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity
    android:name=".FirstActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

해당 코드는 app/manifests 에 있는 코드이다.

여기서 문제가 되는 코드는

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

이 부분인데

앱이라는 놈이 시작 될 때 안드로이드 시스템은 AndroidManifest.xml 파일을 읽고, 위코드를 찾아서 실행시키는데

여기서 문제는 위코드가 FirstActivity와 SecondActivity모두 필터적용이 되었다는거다.

즉, Activity 두곳에 필터되어있기때문에 둘중 먼저 쓰인 SecondActivity 페이지가 먼저 실행이 된거다.

 

해결책

말 그대로 app/manifests의 SecondActivity부분에서 위 코드만 지워주면 해결된다.

<activity
    android:name=".SecondActivity"
    android:exported="true"
    android:label="Second Activity">
    <intent-filter>
        <action android:name="android.intent.action.DIAL" />
        <category android:name="android.intent.category.DEFAULT" />

        <data android:scheme="tel" />
    </intent-filter>

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

짠! 이럼 해결되어 앱을 실행하면 정상적으로 FirstActivity 부터 실행되고 모두 정상작동한다.

 

느낀점

왠일로 너무 쉽게 해결되서 먼가 찝찝한기분이다.

요즘 매일 매번 사건사고가 터져서 머리싸매야 정상처럼 느껴진다.

그런데 오늘은 해가 서쪽에서 떳나?

물론 중간에 깃허브 한번 날려먹어서 깃허브 Pull requests 기록이 모두 날라간건 애교다.

 

이 문제 말고는 딱히 막힘없이 4주차 강의까지 마칠 수 있었다. 행복한 하루였다.

 

아래 깃허브는 Pull requests 기록 다날려먹고 완제품만 올릴 수 밖에 없는 나의 오늘 기록이다.

https://github.com/seongssu/Introduction-to-Android-App-Development-4weak

 

GitHub - seongssu/Introduction-to-Android-App-Development-4weak

Contribute to seongssu/Introduction-to-Android-App-Development-4weak development by creating an account on GitHub.

github.com

 

'TIL, WIL(일기)' 카테고리의 다른 글

23.08.04 1탄 registerForActivityResult  (0) 2023.08.05
23.08.03 Oncreate함수 초기화  (0) 2023.08.04
23.08.01 실무에서 버튼 디자인(스압)  (3) 2023.08.01
23.07.31 layout  (0) 2023.07.31
23.07.28 WIL  (0) 2023.07.28