가끔 TV, 모바일, 컴퓨터 같은 다른 제품을 살 때 "Certified Refurbished" 제품이다. 라는걸 볼수가 있다.
이게 무슨 뜻인가?
상품이 certified refurbished 라는 건, "본 상품은 원 소유자가 이전에 있었으며, 공정과정을 거쳐, 판매를 위해 다시 꾸며졌다" 라는 뜻이다.
그럼 어떤 상품이 certified refurbished 되는가?
고객이 상품을 구매한 뒤, 하자 문제나 단순변심등의 이유로 상품이 재반환 될 경우, 생산자는 다시 일련의 과정을 거쳐 해당 물품을 재판매 하기 위한 준비를 한다. 세척은 당연하거니와, 기능상의 문제 확인 및 테스트를 거쳐 다시 상품을 내 놓게 된다. 이렇게 재판매 준비가 된 제품들은 일반적인 경우에는 해당 회사의 공식 웹사이트에서 구매가 가능하다.
근데 왜 새것도 있는데 남이 쓰다만거를 다시 꾸민것을 사는건가?
1) 사실상 다시 공수를 투입하여 공장에서 판매 준비를 마친것이기 때문에, 제품이 특별하게 나쁠게 없다.
2) 싸다. 당연한 시장논리겠지만, 반품되었던 상품이고, 신규 제품으로 분류되지 않다보니 "싸다."
단점은?
1) 최근에 나온 모델은 거의 없다.
- 한번 판매되었던 상품이 수거되어 재공정을 거친것이다 보니, 보통 출시된지 좀 지난 모델들이 주를 이루는 편이다.
Fragment1.java (app->java); ※ Empty Project 로 생성하여 이 파일이 없다면, "생성"
package com.example.fragment_Interaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
// -- Inflate the layout for this fragment --
return inflater.inflate(
R.layout.fragment1, container, false);
}
}
Fragment2.java (app->java); ※ Empty Project 로 생성하여 이 파일이 없다면, "생성"
package com.example.fragment_Interaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class Fragment2 extends Fragment {
@Override
public View onCreateView (LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
// -- Inflate the layout for this fragment --
return inflater.inflate(
R.layout.fragment2, container, false);
}
@Override
public void onStart(){
super.onStart();
//-- Button View ---
Button btnGetText = (Button)
getActivity().findViewById(R.id.btnGetText);
btnGetText.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView lbl = (TextView)
getActivity().findViewById(R.id.lblFragment1);
Toast.makeText(getActivity(), lbl.getText(), Toast.LENGTH_LONG).show();
}
});
}
}
위와같이 코드를 작성하면, 아까 보았던 기능을 구현할 수 있다.
눈치빠른 삐약이들은 알아챘겠지만, 대부분의 구조와 기능은 지난 챕터에서 다 했던것들이고
사실 중요한건 fragment2.xml 과 fragment2.java 소스코드이다.
----------------------------------------
getActivity() 메서드를 이용하여, 현재 프래그먼트가 임베디드(embeded; 속해있다는 것 정도로 해석하면 되겠다)되어있는 액티비티를 찾는다. 그 다음 findViewById() 메서드를 사용하여, 액티비티 내의 (정확히 말하면 "액티비티" 안에 "프래그먼트" 안에있는 "뷰를") 찾아낸다.
그 다음 토스트 메서드를 사용하여 글자를 화면 앞으로 띄워준다.
----------------------------------------
※ 현재는 프래그먼트가 어떻게 서로 상호작용 하는지를 알아보는데에 집중하자. 너무 세세한 것에 목메다가 개발 공부를 포기한 적이 한두번이 아니다.
아까와 마찬가지로 화면이 가시적(visible)으로 변하면, onStart 와 onResume 의 생명주기가 발생한다.
백버튼으로 app을 종료(kill)했을 때어플리케이션을 종료하였을 때 생명주기
아까 했던 이야기를 다시 해보자
<!--"그간에 다른 개발자 카카오방에서 엿들어본 결과, 액티비티와 프래그먼트의 생명주기가 중요한 이유는 하나의 어플리케이션은 보통 다수의 액티비티, 프래그먼트, 그 이외의 많은 기능들로 이루어져 있는데, 자신이 원하는 기능의 순서를 정밀하게 정의하기 위해 중요하다!" -->
라고 주장하였는데 예를 하나 들어보자.
프래그먼트가 종료됨과 동시에 그 다음에 자동으로 실행하고 싶은 작업이 있다라고 하면, 개발자는 그 작업을 onStop, onDestroyView, onDetach 어디에 둘지 그 기능에 따라 고심하여 선택할 수 있을것이다.
액티비티와의 가장 큰 차이!
1. 프래그먼트는 항상 액티비티안에 있어야 한다. 프래그먼트를 포함하고 있는 액티비티를 호스트 액티비티라고 한다. (주인님 ㅠㅠ)
2. 액티비티 내에서 어떠한 작업을 하다가 back 버튼을 누르면, 사용자가 했던 일련의 작업(transaction)을 자동으로 저장한다. 이를 back stack 에 자동으로 저장한다고 한다. 근데 우리 말썽쟁이 프래그먼트는 그딴거 없다. back stack 에 자동으로 transaction이 쌓이기를 원하면, "addToBackStack() 메서드를 사용하여 지정하여야 한다.