인코딩의 Decoding

반응형

Activity를 하나 추가한 후 Intent를 사용하여 Activity간 객체 정보를 전달해 보겠습니다.

 

1. Activity 하나 추가

왼쪽 상단 File -> new -> Activity -> Empty Activity 선택 후 Activity 하나 추가(이름은 MenuActivity 로 설정)

 

2. activity_main.xml에 button 추가

버튼 추가 text 속성을 "화면 띄우기"로 변경
button을 id를 통하여 조정할 것이므로 id(이 버튼의 id는 button)가 무엇인지 알아야한다.

3. activity_menu.xml에 버튼 추가

MenuActivity 화면에도 버튼 추가하고 text 속성을 "돌아가기"로 설정

4. MainActivity 기능 구현(MainActivity.java)

1) id를 이용하여 button을 객체에 할당

2) 할당된 버튼에 onClick 메소드 추가

3) 인텐트(Activity간 통신 연결)를 선언하고 MenuActivity와 연결

4) ArrayList 객체 선언하고 요소 추가

5) Intent의 putExtra 메소드를 이용하여 객체를 MenuActivity로 넘겨주기

6) startActivityForResult 메소드를 사용하여 Activity간 통신 시작(button을 클릭하면 MenuActivity가 호출된다.)

 

5. MenuActivity구현 (MenuActivity.java)

1) MenuActivity에 있는 button 객체에 할당

2) button에 onClick 메소드 추가( finish()는 MenuActivity 종료를 뜻함, 버튼을 누르면 다시 MainActivity로 돌아간다.)\

3) Intent를 정의하고(passedIntent) getIntent를 통해 MainActivity에서 넘겨준 Intent를 받아 passedIntent에 할당

4) processIntent라는 메소드 정의(intent 안에 ArrayList가 있다면 첫번재 요소를 Toast 메세지로 띄어준다.)

 

결과

MainActivity (버튼을 클릭하면 MenuActivity가 호출된다.)
MenuActivity가 호출되면서 전달된 Intent안에 있던 ArrayList의 첫번째 요소가 Toast메세지로 띄어짐

 

+

참고

MainActivity.java 소스

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.button); // id로 버튼을 찾아 버튼 객체에 할당

    //onClick 메소드 추가
    button.setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick(View v){
        Intent intent = new Intent(getApplicationContext(), MenuActivity.class);

        ArrayList<String> days = new ArrayList<String>(); //ArrayList 선언
        days.add("Monday");
        days.add("Tuesday");
        //Intent 사용하여 MenuActivity로 객체 넘겨주기
        intent.putExtra("days",days);
        //Intent를 사용하여 Activity간 통신 start
        startActivityForResult(intent, 101);
      }
    });     //버튼에 대한 onClick 메소드
  }
}

MenuActivity.java 소스

public class MenuActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menu);

    Button button2 = (Button) findViewById(R.id.button2);

    button2.setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick(View v){
        finish();
      }
    });

    Intent passedIntent = getIntent();
    processIntent(passedIntent);
  }

  private void processIntent(Intent intent){
    if(intent != null){
      ArrayList<String> days = (ArrayList<String>)intent.getSerializableExtra("days");
      if(days != null){
        Toast.makeText(getApplicationContext(),"전달받은 ArrayList의 첫번째 요소 :"+days.get(0),Toast.LENGTH_LONG).show();
      }
    }
  }
}
반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band