반응형
Serializable (직렬화)
클래스 정의시 뒤에 implements Serializable 정의
내부에서 사용되는 객체 데이터를 외부에서도 사용 할 수 있도록 해주는 것
Serializabl로 객체를 사용하는 이유
다른 액티비티에게 데이터 전달시 하나씩 정의 전달하는 방법
- 단순히 간단히 사용 할 때에는 한개씩 하는 방법도 나쁘지 않음
String strData = "Hello";
String strData2 = "World";
intent.putExtra("Data1", strData);
intent.putExtra("Data2", strData2);
객체 자체에 여러가지 정보를 담아 다른 액티비티에게 데이터를 전달하는 방법
- 여러가지의 데이터를 보낼 경우 하나하나 일일이 지정하지 않고 객체 자체에 정보를 담는 것이 유용
- 예를 들면 회원가입시 회원의 정보를 일일이 지정하지 않고 member 라는 객체에 담아 전달하는 것이 편리
public class Data implements Serializable {
public String strData, strData2;
}
data.strData = "Hello";
data.strData2 = "World";
intent.putExtra("Data", data);
객체 자체를 다른 액티비티에게 전달하기 (Android Studio)
기능 설계
- MainActivity의 텍스트뷰를 클릭하면 SubActivity로 이동
- 이동시 지정된 Hello, World 두 개의 문자열 변수 출력 (Toast 이용)
레이아웃 UI 설계
- MainActivity
- SubActivity
소스 코드
(소스는 사용방법과 이해를 돕기위해 소스 코드를 간소화하였으므로 따로 설명은 없습니다.)
- Data.java
import java.io.Serializable;
public class Data implements Serializable {
// 멤버 변수 strData, strData2
public String strData, strData2;
}
- MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 텍스트뷰 객체 생성
TextView tv = findViewById(R.id.textView);
// 텍스트뷰 클릭시 이벤트, SubActivity로 이동
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Intent 객체 생성, Main -> Sub
Intent intent = new Intent(MainActivity.this, SubActivity.class);
// Data 클래스 객체 생성, data
Data data = new Data();
// Data 클래스의 객체 data의 멤버 변수에 값 입력
data.strData = "Hello";
data.strData2 = "World";
// data 객체 자체를 다른 액티비티에게 전달
intent.putExtra("data", data);
// 액티비티 이동
startActivity(intent);
}
});
}
}
- SubActivity.java
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
// Data 클래스의 객체 생성, data
Data data = new Data();
// data 객체 자체를 getSerializableExtra 메소드로 전달 받음
data = (Data) getIntent().getSerializableExtra("data");
// 전달 받은 객체의 데이터 출력, HelloWorld
Toast.makeText(getApplicationContext(), data.strData+data.strData2, Toast.LENGTH_LONG).show();
}
}
실행 화면
- 실행시 첫 화면
- MainActivity 라고 쓰여진 텍스트뷰 클릭시 액티비티 이동하고 객체로 저장된 데이터 출력
- strData=Hello / strData2=World
반응형