* 시를 표시하는 액티비티인 ShowPoem 클래스를 정의한다.
시의 제목, 작가, 내용 및 이미지를 표시하고, 사용자가 뒤로 가기 버튼을 누르면 액티비티를 종료한다.
package com.example.b_poemapp01;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class ShowPoem extends AppCompatActivity {
LinearLayout layout;
TextView title, author, body;
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.poem);
layout = (LinearLayout) findViewById(R.id.poemlayout);
title = (TextView) findViewById(R.id.title);
author = (TextView) findViewById(R.id.author);
body = (TextView) findViewById(R.id.body);
img=(ImageView) findViewById(R.id.img);
Resources res = getResources();
Intent it = getIntent();
String tag = it.getStringExtra("it_tag");
int image_id =
res.getIdentifier("image"+tag, "string", getPackageName());
String image_str = res.getString(image_id);
int id_drawable =
res.getIdentifier(image_str, "drawable", getPackageName());
Drawable drawable = getDrawable(id_drawable);
img.setBackground(drawable);
int title_id = res.getIdentifier("title" + tag, "string", getPackageName());
String title_str = res.getString(title_id);
title.setText(title_str);
setTitle(title_str);
int author_id = res.getIdentifier("author" + tag, "string", getPackageName());
String author_str = res.getString(author_id);
author.setText(author_str);
int body_id = res.getIdentifier("body" + tag, "string", getPackageName());
String body_str = res.getString(body_id);
body.setText(body_str);
} // onCreaet
public void goBack(View view){
finish();
}// goBack
}
1. LinearLayout, TextView, ImageView 변수 : 레이아웃의 각 요소를 참조하는데 사용된다.
2. onCreate(Bundle savedInstanceState) : 액티비티가 생성될 때 호출된다. 여기서 액티비티의 초기화 작업이 수행된다.
3. setContentView(R.layout.poem) : poem.xml 레이아웃 파일을 현재 액티비티에 적용한다.
이 레이아웃 파일은 시를 표시하는 액티비티의 UI를 정의한다.
4. Intent it = getIntent() : 이 코드는 이전 액티비티에서 전달된 Intent를 가져온다.
여기서는 ShowPoem 액티비티를 시작하는데 사용된 Intent이다.
5. String tag = it.getStringExtra("it_tag") : Intent에서 it_tag라는 이름의 extra 데이터를 가져온다.
이 extra는 이전 액티비티에서 선택된 시의 태그를 나타낸다.
6. 시에 관련된 정보를 가져와서 화면에 표시한다.
getResources() 을 사용하여 리소르를 가져오고,
getIndentifier() 를 사용하여 리소스의 ID를 가져온다.
그런 다음 해당 ID를 사용하여 시의 제목, 작가, 내용 및 이미지를 설정한다.
7. res.getIdentifier("image"+tag, "string", getPackageName()) : 리소스의 ID 를 가져오는데 사용된다.
image와 tag를 조합하여 해당하는 이미지의 리소스 ID를 가져온다.
tag는 이전 액티비티에서 선택된 시의 태그를 나타낸다.
8. res.getString(image_id) : 리소스의 문자열 값을 가져온다.
image_id 를 사용하여 해당하는 이미지의 리소 이름을 가져온다.
9. res.getIdentifier(image_str, "drawable", getPackageName()) : 이미지 리소스의 ID를 가져온다.
여기서는 image_str 을 사용하여 해당하는 이미지의 리소스 ID를 가져온다.
10. getDrawable(id_drawable) : 리소스 ID에 해당하는 Drawable 객체를 가져온다.
11. img.setBackground(drawable) : img ImageView의 배경에 가져온 Drawable 을 설정한다.
즉, 시와 관련된 이미지를 화면에 표시한다.
12. res.getIdentifier("title" + tag, "string", getPackageName()) : 시의 제목에 해당하는 문자열 리소스의 ID를 가져온다.
tag를 이용하여 선택된 시의 태그에 해당한느 리소스를 가져온다.
'학교 > Android' 카테고리의 다른 글
MainActivity, Showpoem, ShowTrip, ShowVideo java / Manifest.xml (video+poem) (0) | 2024.04.19 |
---|---|
ShowVideo.java (videoListApp) (0) | 2024.04.17 |
MainActivity.java (videoListApp) (0) | 2024.04.17 |
MainActivity.java (poemApp01) (0) | 2024.04.17 |
manifest.xml (poemApp01) (0) | 2024.04.17 |