activity여러개 만들어볼 것
xml layout = 화면 구성 결정
Mainactivity = 동작 구성
xml이 res>layout에 들어가 있음
MainActivity에 xml이 연결되어 있음
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
R : res폴더를 의미
layout : layout폴더
Activity화면이 만들어질 때 자동 호출
setContentView();
에서 layout xml파일이 합쳐진다고 보면됨
activity_main.xml은
button을 메모리에 올려주는 역할
변수 상자는 있지만, 변수상자가 비어있다.
button 이 inflater에 의해 메모리에 올라가기 전에 버튼을 찾으면,
nullpointexception이 발생한다.
여러 부분 화면을 사용하면,
inflation을 직접해야되는데,
이때 개념을 잘 알아야함.
activity를 만들면 자동으로
layout xml도 생성됨
<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에도 가 추가됨
<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>
부분화면인 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();
}
따로 빼보면 중요한 inflater코드는 아래와 같다.
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.sub1, container,true);