220525
- 멀티 액티비티
자바파일 상위패키지 - new empty activity
=> 메인 - 결과 화면 연결
- xml : main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btnNewActivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="결과 액티비티 호출"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="메인 화면"/>
</LinearLayout>
- xml : 2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Activity">
<Button
android:id="@+id/btnReturn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="메인으로 돌아가기"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="결과 액티비티"/>
</LinearLayout>
- java : main
package com.example.multiactivity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button btnNewActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnNewActivity = findViewById(R.id.btnNewActivity);
//버튼 처리 작업
btnNewActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mintent = new Intent(getApplicationContext(), Activity.class);
startActivity(mintent);
}
});
}
}
- java : 2
package com.example.multiactivity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Activity extends AppCompatActivity {
Button btnReturn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
btnReturn = findViewById(R.id.btnReturn);
btnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
- 국어, 영어 점수 입력 -> 성적 계산
- xml : 메인
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="50dp"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:padding="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:text="국어"/>
<EditText
android:id="@+id/edtKor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="숫자 입력"
android:inputType="number"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:padding="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:text="영어"/>
<EditText
android:id="@+id/edtEng"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="숫자 입력"
android:inputType="number" />
</LinearLayout>
<Button
android:id="@+id/btnResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="결과 보기"/>
</LinearLayout>
- xml : 2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="50dp"
tools:context=".Activity">
<TextView
android:id="@+id/tvScore"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:gravity="center"/>
<Button
android:layout_marginTop="50dp"
android:id="@+id/btnReturn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="메인으로 돌아가기"/>
</LinearLayout>
- java : 메인
package com.example.multiactivity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText edtKor, edtEng;
Button btnResult;
int kor, eng;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edtKor = findViewById(R.id.edtKor);
edtEng = findViewById(R.id.edtEng);
btnResult = findViewById(R.id.btnResult);
btnResult.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
kor = Integer.parseInt(edtKor.getText().toString());
eng = Integer.parseInt(edtEng.getText().toString());
Intent intent = new Intent(getApplicationContext(), Activity.class);
intent.putExtra("korScore",kor);
intent.putExtra("engScore",eng);
startActivity(intent);
}
});
}
}
- java : 2
package com.example.multiactivity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Activity extends AppCompatActivity {
Button btnReturn;
TextView tvScore;
int kor, eng, tot, avg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
btnReturn = findViewById(R.id.btnReturn);
tvScore = findViewById(R.id.tvScore);
Intent gintent = getIntent();
kor = gintent.getIntExtra("korScore",0);
eng = gintent.getIntExtra("engScore",0);
tot = kor+eng;
avg = tot/2;
tvScore.setText("** 성적 결과 **\n국어 : "+kor+"\n영어 :"+eng+"\n총점 : "+tot+"\n평균 : "+avg);
//메인 돌아가기 버튼
btnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
- 명화 인기투표
- xml : 메인
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<ImageView
android:id="@+id/img1"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_margin="5dp"
android:layout_weight="1"
android:src="@drawable/dog" />
<ImageView
android:id="@+id/img2"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/cat"/>
<ImageView
android:id="@+id/img3"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/dog"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<ImageView
android:id="@+id/img4"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/dog"/>
<ImageView
android:id="@+id/img5"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/cat"/>
<ImageView
android:id="@+id/img6"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/dog"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<ImageView
android:id="@+id/img7"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/dog"/>
<ImageView
android:id="@+id/img8"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/cat"/>
<ImageView
android:id="@+id/img9"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/dog"/>
</LinearLayout>
<Button
android:id="@+id/btnVoteResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="투표 종료"/>
</LinearLayout>
- xml : 2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".ResultActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="명화 이름1"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
style= "?android:attr/ratingBarStyleIndicator"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="명화 이름2"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
style= "?android:attr/ratingBarStyleIndicator"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="명화 이름3"
android:layout_weight="1"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
style= "?android:attr/ratingBarStyleIndicator"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="명화 이름4"
android:layout_weight="1"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
style= "?android:attr/ratingBarStyleIndicator"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName5"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="명화 이름5"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
style= "?android:attr/ratingBarStyleIndicator"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="명화 이름6"
android:layout_weight="1"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
style= "?android:attr/ratingBarStyleIndicator"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="명화 이름7"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar7"
style="?android:attr/ratingBarStyleIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="명화 이름8"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
style= "?android:attr/ratingBarStyleIndicator"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvName9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="명화 이름9"
android:textSize="20dp"/>
<RatingBar
android:id="@+id/rBar9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
style= "?android:attr/ratingBarStyleIndicator"
/>
</LinearLayout>
<Button
android:id="@+id/btnReturn"
android:layout_marginTop="50dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="메인으로 돌아가기"
/>
</LinearLayout>
- java : 메인
package com.example.voteapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button btnVoteResult;
ImageView[] imgs = new ImageView[9];
Integer[] imgsID = {R.id.img1, R.id.img2,R.id.img3,R.id.img4,R.id.img5,R.id.img6,R.id.img7,R.id.img8,R.id.img9};
String[] imgName = {"a","b","c","d","e","f","g","h","i"};
int[] voteCount = new int[9]; //각 명화 투표 수
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnVoteResult = findViewById(R.id.btnVoteResult);
for (int i=0;i<imgs.length;i++){
imgs[i]=findViewById(imgsID[i]);
}
//이미지 클릭
for (int i=0;i<imgs.length;i++) {
final int index= i; //final 처리
imgs[index].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
voteCount[index]++;
Toast.makeText(getApplicationContext(), imgName[index] + " : 총 " + voteCount[index] + "표",
Toast.LENGTH_SHORT).show();
}
});
}
//투표 종료 버튼
btnVoteResult.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),ResultActivity.class);
//지금 코드 맥락에서 ResultActivity 클래스와 연결
intent.putExtra("VoteCount",voteCount);
intent.putExtra("ImgName",imgName);
//전달할 변수: 대문자 //배열 전체 전달
startActivity(intent);
}
});
}//oncreate
}
- java : 2
package com.example.voteapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.TextView;
public class ResultActivity extends AppCompatActivity {
Button btnReturn;
TextView tvName[] = new TextView[9];
Integer tvNameID[] = {R.id.tvName1,R.id.tvName2,R.id.tvName3,R.id.tvName4,
R.id.tvName5,R.id.tvName6,R.id.tvName7,R.id.tvName8,R.id.tvName9};
RatingBar rBar[] = new RatingBar[9];
Integer rBarID[] = {R.id.rBar1,R.id.rBar2,R.id.rBar3,R.id.rBar4,
R.id.rBar5,R.id.rBar6,R.id.rBar7,R.id.rBar8,R.id.rBar9};
int[] voteResult; //투표 수 배열
String[] imgNames; //명화 이름 배열
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
btnReturn = findViewById(R.id.btnReturn);
for (int i=0;i<tvName.length;i++){
tvName[i]=findViewById(tvNameID[i]);
}
for (int i=0;i<rBar.length;i++){
rBar[i]=findViewById(rBarID[i]);
}
Intent gintent = getIntent();
voteResult = gintent.getIntArrayExtra("VoteCount");
imgNames = gintent.getStringArrayExtra("ImgName");
for (int i=0;i<voteResult.length;i++){
tvName[i].setText(imgNames[i]+" (총 "+voteResult[i]+"표)");
rBar[i].setRating(voteResult[i]);
}
btnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
////이 날 질문했는데 다음날에 관련된 예제 보여주겠다고 하셨당
Q. 선생님 메인으로 돌아가기 버튼 눌렀을 때 투표했던 값들 초기화시키고 새로 투표하게 하고 싶은데, 그런 설정은 어떻게 할까요? btnReturn onClick 메소드에서 설정해도 안 돼서요
=> 액티비티 Life cycle (생명 주기) 개념과 관련됨
'Programming > 국비학원' 카테고리의 다른 글
| 220530 - 안드로이드 구현 실습 (Scroll, Spinner, 구글맵 불러오기) (0) | 2022.05.31 |
|---|---|
| 220526 - 안드로이드 구현 실습 (투표, 다이어리) (0) | 2022.05.30 |
| 220524 - 안드로이드 구현 실습 (0) | 2022.05.25 |
| 220519 - 자료구조(queue), IO 기반 입출력, 안드로이드 구현 실습 (0) | 2022.05.20 |
| 220518 - 람다식, 컬렉션 프레임워크, 자료 구조 (0) | 2022.05.19 |