Activity1

Du-Hyeon, Kim·2023년 8월 31일
0

Android

목록 보기
7/12

Activity1

activity여러개 만들어볼 것

화면 구성 요소(융합적)

1. Layout + MainActivity

xml layout = 화면 구성 결정
Mainactivity = 동작 구성

xml이 res>layout에 들어가 있음

MainActivity에 xml이 연결되어 있음

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

2. R.layout

R : res폴더를 의미
layout : layout폴더

3. onCreate()

Activity화면이 만들어질 때 자동 호출
setContentView();
에서 layout xml파일이 합쳐진다고 보면됨

button inflater

activity_main.xml은
button을 메모리에 올려주는 역할

1. NullPointException

변수 상자는 있지만, 변수상자가 비어있다.
button 이 inflater에 의해 메모리에 올라가기 전에 버튼을 찾으면,
nullpointexception이 발생한다.

2. inflation

여러 부분 화면을 사용하면,
inflation을 직접해야되는데,
이때 개념을 잘 알아야함.

Adding Activity

1. app>new>Activity>Emptylayout

activity를 만들면 자동으로
layout xml도 생성됨

2. Manifest에도 추가됨

<activity
            android:name=".MenuActivity"
            android:exported="false" />
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

Manifest.xml에도 가 추가됨

3. Manifest에서 처음으로 실행될 화면 구성 설정

<activity
            android:name=".MainActivity"
            android:exported="false" />
        <activity
            android:name=".MenuActivity"
            android:exported="true">
            <!--처음 뜨는 화면에 대한 정보들이기 떄문에 지금 menu acvitivt로 위에거 변경함-->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

4. sub1.xml 추가하기

부분화면인 sub1.xml이라는 layout을 설정하고,
menu activity에서 버튼을 눌렀을때,
sub1이 menu의 linearlayout으로 불러와지게 inflater를 작동시키는 코드

LinearLayout container;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);

        container = findViewById(R.id.contatiner);

        Button button2 = findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addLayout();
            }
        });
    }
    public void addLayout(){
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.sub1, container,true);
        //inflat할거, 올릴위치 , 바로 올릴지 말지

        Toast.makeText(this, "부분 화면이 추가되었습니다.", Toast.LENGTH_LONG).show();

    }

5. inflater 세부코드

따로 빼보면 중요한 inflater코드는 아래와 같다.

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.sub1, container,true);

0개의 댓글