2012-01-23 3 views
0

고유 ID를 생성 한 다음 서비스에 문자열을 전달하는 활동이 있는데, 문제는 해당 활동의 데이터를 전달하려고 할 때마다 앱이 강제 종료된다는 것입니다. 서비스.클래스간에 데이터를 전달할 수 없습니다.

일반적으로 Java 응용 프로그램을 프로그래밍 할 때 클래스간에 데이터를 전달하는 getter 및 setter 메서드를 사용하므로이 문제가 발생하는 이유는 누구나 알 수 있습니까?

public void setId(String mydeviceId){ 

    TelephonyManager tm = (TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE); 
    final String DeviceId, SerialNum, androidId; 
    DeviceId = tm.getDeviceId(); 
    SerialNum = tm.getSimSerialNumber(); 
    androidId = Secure.getString(getContentResolver(),Secure.ANDROID_ID); 
    UUID deviceUuid = new UUID(androidId.hashCode(), ((long)DeviceId.hashCode() << 32) | SerialNum.hashCode()); 
    mydeviceId = deviceUuid.toString(); 
    this.mydeviceId = mydeviceId; 

    } 


    public String getId(){ 

     return mydeviceId; 

    } 
+1

을 참조하십시오. 수업 간은 활동을 의미합니까? 그렇다면 Intent 번들을 사용해야합니다. 활동 사이에서 일하지 못하게하십시오. – kosa

+1

예외가 발생한 소스 인 logcat에서 스택 추적을 게시하고 예외가 발생한 소스의 행 번호를 식별하십시오. –

+0

null 포인터 예외가 발생했습니다. @thinksteep이 Intent 번들을 사용해야한다는 점에 유의해야합니다. 따라서 의도 번들을 사용하여 데이터를 전달하는 방법을 살펴 보겠습니다. –

답변

1

수업 간은 활동을 의미합니까? 그렇다면 Intent 번들을 사용해야합니다. 활동 사이에서 일하지 못하게하십시오. 여기에 예제가 있습니다 how to pass data between activities.

+0

thinksteep을 위해 건배합니다. 서비스에서 Java 클래스로 데이터를 전달할 때도이 작업을 수행해야하는지 궁금합니다. –

+0

아니요, 서비스로는이 작업을 수행 할 수 없습니다. 내 대답을 참조하십시오. – waqaslam

+0

여기 서비스 활동에 대한 논의가 있습니다. http://stackoverflow.com/questions/3747448/android-passing-data-between-service-and-activity. 그건 그렇고, 안드로이드 용어 (공식이 아니지만 목적을 이해하는 것)에서 활동에 대해 논의 할 경우, 헬퍼 클래스/내부 클래스를 대표 할 수있는 클래스로 더 잘 부르지 않는 것이 좋습니다. – kosa

1

귀하의 서비스와 통신하려면 귀하의 활동을 bind으로 허용하십시오. this 가이드를 참조하십시오. 그 것이 좋습니다.

또는 서비스 및/또는 활동 간 통신을 위해 원하는 값을 브로드 캐스팅 할 수 있습니다. 자세한 내용은 this

관련 문제