728x90
반응형
문제
- 초기화면에서 라디오버튼으로 네 가지 동물 이름을 선택할 수 있고, <그림보기>를 클릭하면 그림이 대화상자로 나오는 프로젝트를 작성하시오.
결과 화면
XML 코드
<activity_main.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/imgDog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="강아지"/>
<RadioButton
android:id="@+id/imgCat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="고양이"/>
<RadioButton
android:id="@+id/imgRabbit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="토끼"/>
<RadioButton
android:id="@+id/imgHorse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="말"/>
</RadioGroup>
<Button
android:id="@+id/btnConfirm"
android:text="그림보기"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<dialog1.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView1"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
JAVA 코드
<MainActivity.java>
package com.example.homework3;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
public class MainActivity extends AppCompatActivity {
Button btnConfirm;
RadioButton rdoCat, rdoDog, rdoRabbit, rdoHorse;
ImageView imageView1;
View dialogView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnConfirm = findViewById(R.id.btnConfirm);
rdoCat = findViewById(R.id.imgCat);
rdoDog = findViewById(R.id.imgDog);
rdoRabbit = findViewById(R.id.imgRabbit);
rdoHorse = findViewById(R.id.imgHorse);
btnConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogView = View.inflate(MainActivity.this, R.layout.dialog1, null);
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
imageView1 = dialogView.findViewById(R.id.imageView1); //여기가 핵심, dialogView라고 안하면 메인XML파일에서 imageView1을 찾기때문에 에러가났다
dlg.setView(dialogView);
if(rdoCat.isChecked()){
imageView1.setImageResource(R.drawable.cat);
dlg.setTitle("고양이");
} else if(rdoDog.isChecked()){
imageView1.setImageResource(R.drawable.dog);
dlg.setTitle("강아지");
} else if(rdoRabbit.isChecked()){
imageView1.setImageResource(R.drawable.rabbit);
dlg.setTitle("토끼");
} else if(rdoHorse.isChecked()){
imageView1.setImageResource(R.drawable.horse);
dlg.setTitle("말");
}
dlg.setNegativeButton("닫기",null);
dlg.show();
}
});
}
}
결과
하다보니 라디오버튼에 일일이 변수 할당해주는거 말고, 라디오그룹으로 묶어서 getCheckedRadioButtonId() 메소드로
case문 돌리면 더 깔끔해 보인다는걸 알았다.
728x90
반응형
'Android, IOS > Android' 카테고리의 다른 글
[에러] all com.android.support libraries must use the exact same version specification (0) | 2019.11.30 |
---|---|
[Android Sutdio를 활용한 안드로이드 프로그래밍 개정 5판] 직접 풀어보기 8-2 및 응용 (0) | 2019.11.23 |
[Android Sutdio를 활용한 안드로이드 프로그래밍] 직접풀어보기 6-3 (2) | 2019.10.21 |
[에러] AAPT 에러, Android resource linking failed (0) | 2019.10.21 |
[Android Sutdio를 활용한 안드로이드 프로그래밍] 연습문제 5-6 (0) | 2019.10.09 |