728x90
Intent
#안드로이드 앱들은 여러 액티비티로 나눠져 있다.
버튼을 누르거나 액션을 취해 다른 액티비티로 전환을 하게 되는 경우가있다.
이럴때 호출이나 메시지를 전달하는 매개체가 바로 Intent ! 이사를 갈때 이삿짐센터와 같다고 생각하면 될것같다.
액티비티를 띄우기 위해 사용되는 메소드는 startActivity()와 startActivityForResult() 두가지가 있다.
startActivity()
-> 단순하게 어떠한 액티비티를 시작하기 위한 용도
startActivityForResult()
-> 액티비티를 시작하고 결과값을 주고받기 위한 용도
값을 주고받기 위해 startActivityForResult()를 사용해보면
public class MainActivity extends AppCompatActivity {
public static final int i = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mMoveSub= (Button)findViewById(R.id.sub_move_button); // activity_main.xml에 sub_move_button 버튼 만들기
mMoveSub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),SubActivity.class);// SubActivity 생성해줘야함
startActivityForResult(intent,i); //서브 액티비티 호출
}
});
}
}
SubActivity는 텍스트뷰만 하나 만들어서 테스트를 해보자
startActivityForResult()를 통하여 SubActivity를 호출하였다.
액티비티 데이터 전달
데이터를 보내는 메서드는 putExtra()
전 액티비티에서 보낸 값을 받아올때는 getExtra() 이 두 함수만 알고있으면 된다.
(엑티비티 안에있는 텍스트뷰 에딧박스 버튼 등은 아래 코드를 확인하여 xml에 잘 만들어서 진행)
MainActivity
public class MainActivity extends AppCompatActivity {
public static final int i = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mMoveSub = (Button)findViewById(R.id.sub_move_button);
mMoveSub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] testArr = {"이윤익","이종협","윤문석","김진웅"};
Information information = new Information("0105547","부천 범박동");
EditText moveData = (EditText)findViewById(R.id.move_text);
String mData = moveData.getText().toString();
Intent intent = new Intent(getApplicationContext(),SubActivity.class);
intent.putExtra("name","이굥의");
intent.putExtra("age",28);
intent.putExtra("arr",testArr);
intent.putExtra("class",information);
intent.putExtra("moveData" , mData);
startActivityForResult(intent,i);
}
});
}
}
Information
public class Information implements Serializable{
String phone_num;
String addres;
public Information(String phone_num, String addres){
this.phone_num = phone_num;
this.addres = addres;
}
public String getPhoneNum() {
return phone_num;
}
public void setPhoneNum(String phone) {
this.phone_num = phone_num;
}
public String getAddres() {
return addres;
}
public void setAddres(String addres) {
this.addres = addres;
}
}
SubActivity
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
TextView tx1 = (TextView)findViewById(R.id.textView1);
TextView tx2 = (TextView)findViewById(R.id.textView2);
TextView tx3 = (TextView)findViewById(R.id.textView3);
TextView tx4 = (TextView)findViewById(R.id.textView4);
TextView tx5 = (TextView)findViewById(R.id.textView5);
TextView tx14 = (TextView)findViewById(R.id.textView14);
Intent intent = getIntent();
//전 액티비티에서 적어준 값
String moveData = intent.getExtras().getString("moveData");
tx14.setText(moveData);
//이름
String name = intent.getExtras().getString("name");
tx1.setText(name);
//나이
int age = intent.getExtras().getInt("age");
tx2.setText(String.valueOf(age));
//배열
String arr[] = intent.getExtras().getStringArray("arr");
String add_array="";
for(String strAr : arr){
add_array+=strAr+" ";
}
tx3.setText(add_array);
//클래스
Information information = (Information)intent.getSerializableExtra("class");
tx4.setText(information.getPhoneNum());
tx5.setText(information.getAddres());
}
}
결과!
첫번째 엑티비티에서 사용자가 입력해준 값도 두번째 엑티비티(SubActivity)에 전달되어서 사용되었다.
'개발 > android' 카테고리의 다른 글
안드로이드 ViewPager 화면 슬라이드 (0) | 2023.06.27 |
---|---|
[Android] 안드로이드 ViewPager 스와이프 막기 (0) | 2023.06.19 |