2013-06-19 1 views
1

전체 (사용자 정의) 클래스 참조를 다른 활동에 전달하고 싶습니다. 이 클래스는 WeekProgramData라고합니다. WeekProgramData에는 7 일 (클래스) 인스턴스의 배열이 있고 각 Day 클래스에는 여러 Switch 인스턴스가 있습니다.Intent를 통해 전체 클래스 참조 전달

클래스 액티비티를 다른 액티비티에서 사용할 수 있도록 클래스 액티비티를 액티비티간에 전달할 수 있습니까?

는 이미 다음 시도하지만 실패에 대한 활동 B에

Intent intent = new Intent(v.getContext(), WeekOverview.class); 
      intent.putExtra("wpd", wpd); 
      startActivity(intent); 

코드 : 활동 A의 WeekProgramData 클래스 참조를 전달하기위한

WeekProgramData wpd = new WeekProgramData(); 

코드, 첫 번째 활동에서 선언 클래스 참조 얻기 :

Bundle extras = getIntent().getExtras(); 
    WeekProgramData wpd = extras.getWeekProgramData("wpd"); 
+0

응용 프로그램에 데이터베이스를 사용하는 것이 좋습니다. 특히 데이터를 고수해야하는 경우 데이터베이스를 사용하는 것이 더 나은 선택 일 수 있습니다. – pogo2065

답변

1

의도를 통해 클래스를 전달하려면 Parcelable 인터페이스를 구현해야합니다. 그것을하는 방법에 관한 Here is a tutorial 그리고 그것은 당신을 너무 오랫동안 가져 가면 안된다. 이 작업을 수행하면 해당 클래스의 인스턴스를 의도에 따라 원하는대로 전달할 수 있습니다.

0

사이에 맞춤 클래스를 전달하는 방법 활동은 수업을 만드는 것입니다. Parcelable. 이것은 데이터를 순차적으로 보내어 쉽게 전송할 수있는 방법입니다. 수업이 Parcelable이되면 표준 putExtra을 사용하고 수업을 들려 줄 수 있습니다. 수업을 검색하려면 getParcelableExtra을 사용할 수 있습니다. Parcelable을 사용하면 null 값을 구분할 수 없으며 모든 중첩 클래스도 해석 가능해야합니다. 귀하의 경우 WeekProgramData 클래스를 Day 클래스와 Switch 클래스뿐만 아니라 parcelable로 만들어야합니다.

0

이 작업을 수행하는 diiferent 몇 가지 방법,하지만 내 생각에 가장 멋진 두 가지 옵션이 있습니다 수 :

  1. WeekProgramData이 GSON을 Parcelable

  2. 을 구현하거나 를 사용하여 Stringwpd를 변환해야합니다 해당 문자열을 두 번째 활동으로 전달하고 마지막으로 을 사용하여 해당 객체에서 객체를 재구성하십시오. Gson 다시

+0

필자는 IPC를 제외하고 Parcelable이 좋다고 생각하지만 여전히 GSON을 사용하여 (비) 직렬화 할 것입니다. 이 의사 소통이 같은 과정에 있다면 [Otto] (http://square.github.io/otto/)를 고려하여 그런 식으로 데이터를 전달하십시오. –

+0

@BobbyHargett 인 텐트는 IPC입니다! – Simon

+0

@Simon, 저는 Parcelables에 대해서 이야기하고있었습니다. Parcelables는 인스턴스 상태에서도 사용됩니다. –

관련 문제