2014-03-24 4 views
0

나는 Socket, PrintWriter 클래스 참조를 포함하는 복잡한 클래스 "Class11"을 가지고있다. 활동간에 전달하는 동안 예외가 발생합니다.안드로이드에서 복합 객체를 흑백으로 처리하기

java.lang.RuntimeException: unable to marshall value Socket[address=/192.168.43.225,port=9990,localport=213234] 
at android.os.Parcel.writeValue(Parcel.java:1137) 
at android.os.Parcel.writeArray(Parcel.java: 543)........ 
  • 그것 때문입니다 : 내가 커플 링을 줄일 것이 아니라 정적 객체 참조, 을 통해 공유의 옵션이 있지만

    public interface Interface11 extends Parcelable{ 
        ........... 
        } 
    
        public class Class11 implements Interface11 { 
         Socket clientSocket; 
         ServerSocket serverSocket; 
    
        PrintWriter writer; 
          BufferedReader reader; 
         private JChatConnection(Parcel in) { 
    
           Object [] objects= in.readArray(Object.class.getClassLoader()); 
           clientSocket=(Socket) objects[0]; 
           serverSocket=(ServerSocket) objects[1]; 
           writer=(PrintWriter) objects[2]; 
           reader=(BufferedReader) objects[3]; 
    
          } 
    
    
        @Override 
        public int describeContents() { 
    
         return 0; 
        } 
    
    
    
        @Override 
        public void writeToParcel(Parcel dest, int flags) { 
    
         Object objects[] = new Object[4]; 
    
          objects[0]=clientSocket; 
          objects[1]=serverSocket; 
          objects[2]=writer; 
          objects[3]=reader; 
    
         dest.writeArray(objects); 
        } 
    
        public static final Parcelable.Creator<Class11> CREATOR = 
    new Parcelable.Creator<Class11>() { 
          public Class11 createFromParcel(Parcel in) { 
           return new Class11(in); 
          } 
    
          public Class11[] newArray(int size) { 
           return new Class11[size]; 
          } 
         }; 
    
    }; 
    

    내가 내가 예외 &있어, 의도을 통해 전달하려 소켓, PrintWriter가 parcellable 아니거나,

  • 나는이 코드를 writeToParcel() 및 private Class11 (Parcel in)에 넣고 있습니다.

누구나 활동간에이 객체를 전달하는 방법에 대한 아이디어가 있습니까?

+0

우리의 호기심뿐 아니라, 앱에 Class1, Class2, Class3 ...이 있습니까? 아니면 도메인 이름일까요? –

+0

이것은 내 수업의 원래 이름을 숨기기위한 잔혹한 시도입니다! - 비밀 007 물건. –

답변

0

귀하의 개체 인스턴스를 Activity에 대한 인수로 전달하지 않을 것을 제안합니다. 이 클래스를 Singleton 또는 Application 클래스의 멤버로 만듭니다. 그러면 앱의 모든 곳에서 Class11 인스턴스에 액세스 할 수 있습니다.

관련 문제