ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인텐트로 클래스 데이터 넘기기
    안드로이드/학습&강좌 2011. 12. 17. 20:47
    Test.class
    //인텐트 간에 값을 넘기기위해서는 반드시 Serializable 구현
    public class Test implements Serializable {
    private String name;
    private int age;
    private String addr;
    public Test(String name, int age, String addr)
    {
    this.name = name;
    this.age = age;
    this.addr = addr;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    public String getAddr() {
    return addr;
    }
    public void setAddr(String addr) {
    this.addr = addr;
    }
    }

    TestPutExtra.class
    public class TestPutExtra extends Activity {
        //Vector 는 직렬화가 잘 안됨 ArrayList 를 사용하면 됨
        ArrayList<Test> list;
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main); 

        Intent i = new Intent(this, TestGetExtra.class);
         list = new ArrayList<Test>();
        
         list.add(new Test("최재현", 30, "수원"));
         list.add(new Test("시스타", 30, "서울"));
         list.add(new Test("소녀시대", 30, "수원"));
         list.add(new Test("원더걸스", 30, "수원"));
         list.add(new Test("레인보우", 30, "수원"));
        
        //값을 넘김
         i.putExtra("list", list);
        
        //인텐트 시작
         startActivityForResult(i, SHOW_PREFERENCES);
         }

       @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data)
        {
         super.onActivityResult(requestCode, resultCode, data);
        
         if(requestCode == SHOW_PREFERENCES)
         if(resultCode == Activity.RESULT_OK)
         {    
    //넘겨준 값은 직렬화 되어 넘어가기 때문에 다른 인텐트에서 변경하여도 값이 변하지 않음
         Log.e("testResult", list.get(0).getName());
         }
        }
    }

    TestGetExtra.class
    public class TestGetExtra extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.preferences);
    Intent intent = getIntent();
    Serializable list = intent.getSerializableExtra("list");
     
        //경고 메세지를 없에주는 어노테이션
    @SuppressWarnings("unchecked")
    ArrayList<Test> l = (ArrayList<Test>)list;
    Log.e("test", ((Test)l.get(0)).getName());
    Log.e("test", ((Test)l.get(1)).getName());
    Log.e("test", ((Test)l.get(2)).getName());
    Log.e("test", ((Test)l.get(3)).getName());
    Log.e("test", ((Test)l.get(4)).getName());
       //첫번째 아이템 값 변경
    l.get(0).setName("kara");
    }

    댓글

COPYRIGHT 2010 EpoNg. ALL RIGHTS RESERVED.