2012-01-23 23 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がインテントバンドルを使用する必要があることを意味しています。インテントバンドルを使用してデータを渡す方法を見ていきます。 –

答えて

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。ところで、あなたが活動について議論しているならAndroidの言葉(公式ではなく、目的を理解すること)の1つの小さな提案は、クラス(ヘルパークラス/内部クラスを表すかもしれない)としてより良く呼ぶのが良い。 – kosa

1

あなたのサービスに連絡するには、アクティビティをbindに許可してください。ガイドthisを参照してください。それが推奨される方法です。

また、サービスやアクティビティの間で通信するために必要な値をブロードキャストできます。詳細はthis

関連する問題