Log.D는 플래그먼트의 라이프사이클
Log.I는 액티비티의 라이프사이클
탭바의 화면은 플래그먼트로 구성된것이고
리사이클러뷰의 아이템 한개를 클릭하면 뜨는것은 액티비티이다.
아래코드는 진행중인 프로젝트에서 테스트한것이므로 코드가 지저분하니 안보는걸 추천
FirstFragment 코드
package com.leopard4.alcoholrecipe;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.leopard4.alcoholrecipe.adapter.RecipeHonorAdapter;
import com.leopard4.alcoholrecipe.adapter.RecipeMasterAdapter;
import com.leopard4.alcoholrecipe.api.GameApi;
import com.leopard4.alcoholrecipe.api.NetworkClient;
import com.leopard4.alcoholrecipe.api.RecipeApi;
import com.leopard4.alcoholrecipe.config.Config;
import com.leopard4.alcoholrecipe.model.cheers.CheersMent;
import com.leopard4.alcoholrecipe.model.cheers.CheersMentRes;
import com.leopard4.alcoholrecipe.model.cheers.Ment;
import com.leopard4.alcoholrecipe.model.recipe.RecipeHonor;
import com.leopard4.alcoholrecipe.model.recipe.RecipeHonorList;
import com.leopard4.alcoholrecipe.model.recipe.RecipeMaster;
import com.leopard4.alcoholrecipe.model.recipe.RecipeMasterList;
import java.util.ArrayList;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
/**
* A simple {@link Fragment} subclass.
* Use the {@link FirstFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class FirstFragment extends Fragment {
// TODO: 매개변수 인수 이름 바꾸기, 프래그먼트 초기화 매개변수와 일치하는 이름 선택, 예: ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: 매개변수 이름 바꾸기 및 유형 변경
private String mParam1;
private String mParam2;
// 멘트를 불러오기위한 단어를 저장하기 위한변수
Button btnMyRecipe, btnGame, btnDogam, btnToast;
TextView txtFirst, txtLast;
int count1 = 0;
int offset1 = 0;
int limit1 = 5;
int count2 = 0;
int offset2 = 0;
int limit2 = 5;
String accessToken;
ProgressBar progressBar3;
RecyclerView recyclerView1, recyclerView2;
RecipeMasterAdapter adapter1;
RecipeHonorAdapter adapter2;
ArrayList<RecipeMaster> recipeMasterList = new ArrayList<>();
ArrayList<RecipeHonor> recipeHonorList = new ArrayList<>();
ArrayList<CheersMent> cheersMentList = new ArrayList<>();
private boolean isLoading1 = false;
private boolean isLoading2 = false;
public FirstFragment() {
// Required empty public constructor
Log.d("프래그먼트1", "플래그먼트생성자: ");
}
/**
* 이 팩터리 메서드를 사용하여 제공된 매개 변수를 사용하여 이 조각의 새 인스턴스를 만듭니다.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return 프래그먼트 FirstFragment의 새 인스턴스입니다.
*/
// TODO: 이름 변경 및 유형 및 매개변수 수 변경
public static FirstFragment newInstance(String param1, String param2) {
Log.d("프래그먼트2", "newInstance: ");
FirstFragment fragment = new FirstFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("프래그먼트3", "onCreate: ");
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("프래그먼트4", "onCreateView: ");
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_first, container, false);
progressBar3 = rootView.findViewById(R.id.progressBar3);
btnMyRecipe = rootView.findViewById(R.id.btnMyRecipe);
btnGame = rootView.findViewById(R.id.btnGame);
btnDogam = rootView.findViewById(R.id.btnDogam);
btnToast = rootView.findViewById(R.id.btnToast);
txtFirst = rootView.findViewById(R.id.txtFirst);
txtLast = rootView.findViewById(R.id.txtLast);
recyclerView1 = rootView.findViewById(R.id.recyclerView1);
recyclerView1.setHasFixedSize(true);
recyclerView1.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
recyclerView2 = rootView.findViewById(R.id.recyclerView2);
recyclerView2.setHasFixedSize(true);
recyclerView2.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
getNetworkData1();
getNetworkData2();
getCheersMentResNetworkData();
recyclerView1.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView1, int newState) { // 스크롤이 멈추면
super.onScrollStateChanged(recyclerView1, newState);
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView1, int dx, int dy) { // 스크롤이 되면
super.onScrolled(recyclerView1, dx, dy);
int lastPosition1 = ((LinearLayoutManager)recyclerView1.getLayoutManager()).findLastCompletelyVisibleItemPosition(); // 마지막으로 보여지는 아이템의 위치
int totalCount1 = recyclerView1.getAdapter().getItemCount(); // 아이템의 총 개수
if(lastPosition1+1 == totalCount1 && !isLoading1){ // 마지막 아이템이 보여지고 && 데이터를 불러오고 있지 않다면
// 네트워크 통해서 데이터를 더 불러온다.
if(count1 == limit1 ){
// 데이터를 불러오고 있다.
isLoading1 = true;
addNetworkData1();
}
}
}
});
recyclerView2.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView2, int newState) { // 스크롤이 멈추면
super.onScrollStateChanged(recyclerView2, newState);
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView2, int dx, int dy) { // 스크롤이 되면
super.onScrolled(recyclerView2, dx, dy);
int lastPosition2 = ((LinearLayoutManager)recyclerView2.getLayoutManager()).findLastCompletelyVisibleItemPosition(); // 마지막으로 보여지는 아이템의 위치
int totalCount2 = recyclerView2.getAdapter().getItemCount(); // 아이템의 총 개수
if(lastPosition2+1 == totalCount2 && !isLoading2){ // 마지막 아이템이 보여지고 && 데이터를 불러오고 있지 않다면
// 네트워크 통해서 데이터를 더 불러온다.
if(count2 == limit2 ){
// 데이터를 불러오고 있다.
isLoading2 = true;
addNetworkData2();
}
}
}
});
btnMyRecipe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), RecipeActivity.class);
startActivity(intent);
}
});
btnGame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), GameActivity.class);
startActivity(intent);
}
});
btnDogam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), DogamActivity.class);
startActivity(intent);
}
});
// 건배사공장으로 이동
btnToast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), GameToastActivity.class);
startActivity(intent);
}
});
return rootView;
}
private void addNetworkData1(){
progressBar3.setVisibility(View.VISIBLE);
Retrofit retrofit = NetworkClient.getRetrofitClient(getActivity());
RecipeApi api = retrofit.create(RecipeApi.class);
Call<RecipeMasterList> call = api.getRecipeMaster(accessToken,offset1,limit1);
call.enqueue(new Callback<RecipeMasterList>() {
@Override
public void onResponse(Call<RecipeMasterList> call, Response<RecipeMasterList> response) {
progressBar3.setVisibility(View.GONE);
if(response.isSuccessful()){
count1 = response.body().getCount();
recipeMasterList.addAll(response.body().getItems());
offset1 = offset1+count1;
adapter1.setOnItemClickListener(new RecipeMasterAdapter.onItemClickListener() {
@Override
public void onItemClick(int index) {
Intent intent = new Intent(getActivity(), RecipeInfoActivity.class);
intent.putExtra("recipeId", recipeMasterList.get(index).getId());
startActivity(intent);
}
});
adapter1.notifyDataSetChanged();
isLoading1 = false; // 데이터를 다불러왔다
// 데이터를 불러오는 동안에는 스크롤을 못하게 막는것이다.
// 자꾸 데이터를 두번씩 가져오므로...
}
}
@Override
public void onFailure(Call<RecipeMasterList> call, Throwable t) {
progressBar3.setVisibility(View.GONE);
Log.d("TAG", "onFailure: " + t.getMessage());
}
});
}
private void getNetworkData1(){
progressBar3.setVisibility(View.VISIBLE);
// 네트워크 통신을 위한 라이브러리인 Retrofit을 사용한다.
// 1. 레트로핏 객체 생성
Retrofit retrofit = NetworkClient.getRetrofitClient(getActivity());
RecipeApi api = retrofit.create(RecipeApi.class);
SharedPreferences sp = getActivity().getSharedPreferences(Config.PREFERENCE_NAME, getActivity().MODE_PRIVATE);
accessToken = "Bearer " + sp.getString(Config.ACCESS_TOKEN, "");// 액세스 토큰이 없으면 "" 리턴
// 오프셋 초기화는, 함수 호출하기 전에!!
offset1 = 0;
count1 = 0;
Call<RecipeMasterList> call = api.getRecipeMaster(accessToken, offset1,limit1);
call.enqueue(new Callback<RecipeMasterList>() {
@Override
public void onResponse(Call<RecipeMasterList> call, Response<RecipeMasterList> response) {
progressBar3.setVisibility(View.GONE);
recipeMasterList.clear(); // 초기화
if(response.isSuccessful()){
count1 = response.body().getCount();
recipeMasterList.addAll(response.body().getItems());
offset1 = offset1+count1;
adapter1 = new RecipeMasterAdapter(getActivity(),recipeMasterList);
adapter1.setOnItemClickListener(new RecipeMasterAdapter.onItemClickListener() {
@Override
public void onItemClick(int index) {
Intent intent = new Intent(getActivity(), RecipeInfoActivity.class);
intent.putExtra("recipeId", recipeMasterList.get(index).getId());
startActivity(intent);
}
});
recyclerView1.setAdapter(adapter1);
}
}
@Override
public void onFailure(Call<RecipeMasterList> call, Throwable t) {
progressBar3.setVisibility(View.GONE);
Log.d("TAG", "onFailure: " + t.getMessage());
}
});
}
private void addNetworkData2(){
progressBar3.setVisibility(View.VISIBLE);
Retrofit retrofit = NetworkClient.getRetrofitClient(getActivity());
RecipeApi api = retrofit.create(RecipeApi.class);
Call<RecipeHonorList> call = api.getRecipeHonor(accessToken,offset2,limit2);
call.enqueue(new Callback<RecipeHonorList>() {
@Override
public void onResponse(Call<RecipeHonorList> call, Response<RecipeHonorList> response) {
progressBar3.setVisibility(View.GONE);
if(response.isSuccessful()){
count2 = response.body().getCount();
recipeHonorList.addAll(response.body().getItems());
offset2 = offset2+count2;
adapter2.setOnItemClickListener(new RecipeHonorAdapter.onItemClickListener() {
@Override
public void onItemClick(int index) {
Intent intent = new Intent(getActivity(), RecipeInfoActivity.class);
intent.putExtra("recipeId", recipeHonorList.get(index).getId());
startActivity(intent);
}
});
adapter2.notifyDataSetChanged();
isLoading2 = false; // 데이터를 다불러왔다
// 데이터를 불러오는 동안에는 스크롤을 못하게 막는것이다.
// 자꾸 데이터를 두번씩 가져오므로...
}
}
@Override
public void onFailure(Call<RecipeHonorList> call, Throwable t) {
progressBar3.setVisibility(View.GONE);
Log.d("TAG", "onFailure: " + t.getMessage());
}
});
}
private void getNetworkData2(){
// 네트워크 통신을 위한 라이브러리인 Retrofit을 사용한다.
// 1. 레트로핏 객체 생성
Retrofit retrofit = NetworkClient.getRetrofitClient(getActivity());
RecipeApi api = retrofit.create(RecipeApi.class);
// 오프셋 초기화는, 함수 호출하기 전에!!
offset2 = 0;
count2 = 0;
Call<RecipeHonorList> call = api.getRecipeHonor(accessToken,offset2,limit2);
call.enqueue(new Callback<RecipeHonorList>() {
@Override
public void onResponse(Call<RecipeHonorList> call, Response<RecipeHonorList> response) {
recipeHonorList.clear(); // 초기화
if(response.isSuccessful()){
count2 = response.body().getCount();
recipeHonorList.addAll(response.body().getItems());
offset2 = offset2+count2;
adapter2 = new RecipeHonorAdapter(getActivity(),recipeHonorList );
adapter2.setOnItemClickListener(new RecipeHonorAdapter.onItemClickListener() {
@Override
public void onItemClick(int index) {
Intent intent = new Intent(getActivity(), RecipeInfoActivity.class);
intent.putExtra("recipeId", recipeHonorList.get(index).getId());
startActivity(intent);
}
});
recyclerView2.setAdapter(adapter2);
}
}
@Override
public void onFailure(Call<RecipeHonorList> call, Throwable t) {
Log.d("TAG", "onFailure: " + t.getMessage());
}
});
}
private void getCheersMentResNetworkData(){
Retrofit retrofit = NetworkClient.getRetrofitClient(getActivity());
GameApi api = retrofit.create(GameApi.class);
Ment ment = new Ment(); // 이 객체는 이 함수가 끝나면 사라진다.
// 랜덤으로 창조말 가져오기
ment.LandomMent();
Call<CheersMentRes> call = api.getCheers(accessToken,2, ment ); // 2는 선창 후창임
call.enqueue(new Callback<CheersMentRes>() {
@Override
public void onResponse(Call<CheersMentRes> call, Response<CheersMentRes> response) {
if(response.isSuccessful()){
txtFirst.setText( response.body().getItem().getFirst() );
txtLast.setText( response.body().getItem().getLast() );
}else{
// response가 에러를 가져왔다면 여기서 처리
txtFirst.setText("이미 집에 가기는");
txtLast.setText("너무 늦었어요");
}
}
@Override
public void onFailure(Call<CheersMentRes> call, Throwable t) {
Log.d("TAG", "onFailure: " + t.getMessage());
}
});
}
// 프래그먼트의 라이프 사이클을 확인
@Override
public void onAttach(Context context) {
super.onAttach(context);
Log.d("프래그먼트5", "onAttach: ");
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d("프래그먼트6", "onActivityCreated: ");
}
@Override
public void onStart() {
super.onStart();
Log.d("프래그먼트7", "onStart: ");
}
@Override
public void onResume() {
super.onResume();
Log.d("프래그먼트8", "onResume: ");
}
@Override
public void onPause() {
super.onPause();
Log.d("프래그먼트9", "onPause: ");
}
@Override
public void onStop() {
super.onStop();
Log.d("프래그먼트10", "onStop: ");
}
@Override
public void onDestroyView() {
super.onDestroyView();
Log.d("프래그먼트11", "onDestroyView: ");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("프래그먼트12", "onDestroy: ");
}
@Override
public void onDetach() {
super.onDetach();
Log.d("프래그먼트13", "onDetach: ");
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
Log.d("프래그먼트", "onSaveInstanceState: ");
}
@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
Log.d("프래그먼트14", "onViewStateRestored: ");
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.d("프래그먼트15", "onConfigurationChanged: ");
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
Log.d("프래그먼트16", "onHiddenChanged: ");
}
@Override
public void onLowMemory() {
super.onLowMemory();
Log.d("프래그먼트17", "onLowMemory: ");
}
}
Recipe를 눌렀을때 나오는 레시피 상세페이지 액티비티코드
package com.leopard4.alcoholrecipe;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.leopard4.alcoholrecipe.api.LikeApi;
import com.leopard4.alcoholrecipe.api.NetworkClient;
import com.leopard4.alcoholrecipe.api.RecipeApi;
import com.leopard4.alcoholrecipe.config.Config;
import com.leopard4.alcoholrecipe.model.recipeOne.RecipeOne;
import com.leopard4.alcoholrecipe.model.recipeOne.RecipeOneResponse;
import java.util.ArrayList;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
public class RecipeInfoActivity extends AppCompatActivity {
ImageView imgUrl,imgRecipeLike;
TextView txtRecipeTitle, txtLikeCnt, txtPercent, txtAlcoholType, txtUserId, txtEngTitle, txtIntro, txtContent, txtIngredient;
Button btnReturnRecipe;
ImageView imgBack;
private String accessToken;
private int recipeId;
private ArrayList<RecipeOne> recipeOneList = new ArrayList<>();
// 상태가변화됨을 감지하는 변수
boolean isChanged = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe_info);
imgBack = findViewById(R.id.imgBack);
btnReturnRecipe = findViewById(R.id.btnReturnRecipe);
txtRecipeTitle = findViewById(R.id.txtRecipeTitle);
imgUrl = findViewById(R.id.imgUrl);
txtLikeCnt = findViewById(R.id.txtLikeCnt);
txtPercent = findViewById(R.id.txtPercent);
txtAlcoholType = findViewById(R.id.txtAlcoholType);
txtUserId = findViewById(R.id.txtUserId);
txtEngTitle = findViewById(R.id.txtEngTitle);
txtIntro = findViewById(R.id.txtIntro);
txtContent = findViewById(R.id.txtContent);
txtIngredient = findViewById(R.id.txtIngredient);
imgRecipeLike = findViewById(R.id.imgRecipeLike);
recipeId = getIntent().getIntExtra("recipeId", 0);
Log.i("레시피 아이디", Integer.toString(recipeId));
getNetworkData();
// 하트의 상태를 변화시킨다.
imgRecipeLike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (imgRecipeLike.isSelected()) { // 하트가 채워져 있다면
imgRecipeLike.setSelected(false); // 하트가 비워진다.
imgRecipeLike.setImageResource(R.drawable.baseline_favorite_border_24_gray);
// 비동기로 네트워크 실행
Retrofit retrofit = NetworkClient.getRetrofitClient(RecipeInfoActivity.this);
LikeApi api = retrofit.create(LikeApi.class);
Call<Void> call = api.deleteLike(accessToken, recipeId);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()) {
// 상태가변화됨을 감지하는 변수
isChanged = true;
Log.i("하트", "하트가 눌렸습니다.");
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
Log.i("하트", "하트가 눌리지 않았습니다.");
}
});
} else { // 하트가 비워져 있다면
imgRecipeLike.setSelected(true); // 하트가 채워진다
imgRecipeLike.setImageResource(R.drawable.baseline_favorite_24);
// 비동기로 네트워크 실행
Retrofit retrofit = NetworkClient.getRetrofitClient(RecipeInfoActivity.this);
LikeApi api = retrofit.create(LikeApi.class);
Call<Void> call = api.postLike(accessToken, recipeId);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()) {
isChanged = true;
Log.i("하트", "하트가 눌렸습니다.");
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
Log.i("하트", "하트가 눌리지 않았습니다.");
}
});
}
}
});
// 뒤로가기 버튼
imgBack.setOnClickListener(v -> {
finish();
});
// 레시피 버튼을 눌렀을때 엑티비티 레시피로 이동~
btnReturnRecipe.setOnClickListener(v -> {
Intent intent = new Intent(RecipeInfoActivity.this, RecipeActivity.class);
startActivity(intent);
});
}
private void getNetworkData() {
Retrofit retrofit = NetworkClient.getRetrofitClient(this);
RecipeApi api = retrofit.create(RecipeApi.class);
SharedPreferences sp = getSharedPreferences(Config.PREFERENCE_NAME, MODE_PRIVATE);
accessToken = "Bearer " + sp.getString(Config.ACCESS_TOKEN, "");// 액세스 토큰이 없으면 "" 리턴
Call<RecipeOneResponse> call = api.getRecipeOne(accessToken, recipeId);
call.enqueue(new Callback<RecipeOneResponse>() {
@Override
public void onResponse(Call<RecipeOneResponse> call, Response<RecipeOneResponse> response) {
if (response.isSuccessful()) {
RecipeOne recipeOne = new RecipeOne();
// recipeOneList.addAll(response.body().getRecipeOne());
recipeOne = response.body().getRecipeOne();
// glide로 이미지 뿌려주기
Glide.with(RecipeInfoActivity.this)
.load(recipeOne.getImgUrl())
.into(imgUrl);
if (recipeOne.getIsLike() == 1) {
imgRecipeLike.setImageResource(R.drawable.baseline_favorite_24);
}
// recipeOnd에 값이 없는게 있을때 처리
if (recipeOne.getImgUrl() == null) {
recipeOne.setImgUrl("");
}
if (recipeOne.getAlcoholType() == null) {
recipeOne.setAlcoholType("");
}
if (recipeOne.getEngTitle() == null) {
recipeOne.setEngTitle("영어이름이 없어요");
}
if (recipeOne.getIntro() == null) {
recipeOne.setIntro("");
}
if (recipeOne.getContent() == null) {
recipeOne.setContent("");
}
if (recipeOne.getIngredient() == null) {
recipeOne.setIngredient("");
}
// 닉네임 뿌려주기
if (recipeOne.getUserId() == 1) {
txtUserId.setText("주인장의시크릿");
} else {
txtUserId.setText(recipeOne.getNickname());
}
// 도수 뿌려주기
if (recipeOne.getPercent() == 1) {
txtPercent.setText("약");
} else if (recipeOne.getPercent() == 2) {
txtPercent.setText("중");
} else if (recipeOne.getPercent() == 3) {
txtPercent.setText("강");
} else {
txtPercent.setText("알수없음");
}
// todo: 나중에 지워야댐 근데 레시피 db에는 주종이라는게 없는데 ??
Log.i("레시피 정보", response.body().toString());
Log.i("레시피 정보", recipeOne.toString()+"");
Log.i("레시피 정보", recipeOne.getImgUrl()+"");
Log.i("레시피 정보", recipeOne.getTitle()+"");
Log.i("레시피 정보", recipeOne.getLikeCnt()+"");
Log.i("레시피 정보", recipeOne.getPercent()+"");
Log.i("레시피 정보", recipeOne.getAlcoholType()+"");
Log.i("레시피 정보", recipeOne.getUserId()+"");
Log.i("레시피 정보", recipeOne.getEngTitle()+"");
Log.i("레시피 정보", recipeOne.getIntro()+"");
Log.i("레시피 정보", recipeOne.getContent()+"");
Log.i("레시피 정보", recipeOne.getIngredient()+ "");
Log.i("레시피 정보", recipeOne.getNickname()+ "");
Log.i("레시피 정보", recipeOne.getIsLike()+ "");
// imgUrl.setImageResource(Integer.parseInt(recipeOne.getImgUrl()));
txtRecipeTitle.setText(recipeOne.getTitle()+"");
txtLikeCnt.setText(recipeOne.getLikeCnt()+"");
txtAlcoholType.setText(recipeOne.getAlcoholType()+"");
txtEngTitle.setText(recipeOne.getEngTitle()+"");
txtIntro.setText(recipeOne.getIntro()+"");
txtContent.setText(recipeOne.getContent()+"");
txtIngredient.setText(recipeOne.getIngredient()+ "");
}
}
@Override
public void onFailure(Call<RecipeOneResponse> call, Throwable t) {
Log.i("레시피 정보", t.getMessage());
}
});
}
// 액티비티의 lifeCycle을 관리하는 메소드
@Override
protected void onStart() {
super.onStart();
Log.i("온스타트", "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.i("온리쥼", "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.i("온퍼즈", "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.i("온스탑", "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("온디스트로이", "onDestroy");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("온리스타트", "onRestart");
}
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i("온리스토어", "onRestoreInstanceState");
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
Log.i("온세이브", "onSaveInstanceState");
}
// 백버튼을 눌렀는지
@Override
public void onBackPressed() {
super.onBackPressed();
Log.i("온백버튼", "onBackPressed");
}
}
'Android' 카테고리의 다른 글
android Spannable을 이용한 TextView에 버튼 만들고 버튼을 클릭하면 선택한 Spannable만 제거 (0) | 2023.03.24 |
---|---|
Android Textview 아이템 클릭이벤트 [Spannable] (0) | 2023.03.23 |
Retrofit2 cache & Wireshark packet capture (0) | 2023.03.20 |
retrofit2 okhttp response의 글자가 깨진다면 (0) | 2023.03.16 |
뷰 결합 FragmentBinding, 결합클래스의 개념 (0) | 2023.02.23 |