2

サービスからアクティビティに float 値を渡すコード:

call.putExtra("floatvalue", fv);
call.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(call);

アクティビティで float 値を取得するためのコード:

Bundle extras=new Bundle();
float value = extras.getFloat("floatvalue");

問題は、サービスからフロート値として何が渡されても、アクティビティで 0.0 しか得られないことです。

コードの問題は何ですか?

編集

アクティビティのコードを次のように変更しました

Bundle extras=new Bundle();
extras=getIntent().getExtras();
float value = extras.getFloat("floatvalue");

うまくいきませんでした。

4

2 に答える 2

1

これを試して:

float value =  getIntent().getFloatExtra("floatvalue", 0.0f);

フロートを開始する前にインテントに追加したため、バンドルからではなく、そのインテントからフロートを取得する必要があります。

于 2013-01-14T13:17:02.663 に答える
1

次のように、サービスでリスナーを定義します。

// listener ----------------------------------------------------
static ArrayList<OnNewLocationListener> arrOnNewLocationListener =
        new ArrayList<OnNewLocationListener>();

// Allows the user to set a OnNewLocationListener outside of this class and
// react to the event.
// A sample is provided in ActDocument.java in method: startStopTryGetPoint
public static void setOnNewLocationListener(
        OnNewLocationListener listener) {
    arrOnNewLocationListener.add(listener);
}

public static void clearOnNewLocationListener(
        OnNewLocationListener listener) {
    arrOnNewLocationListener.remove(listener);
}

// This function is called after the new point received
private static void OnNewLocationReceived(float myValue) {
    // Check if the Listener was set, otherwise we'll get an Exception when
    // we try to call it
    if (arrOnNewLocationListener != null) {
        // Only trigger the event, when we have any listener
        for (int i = arrOnNewLocationListener.size() - 1; i >= 0; i--) {
            arrOnNewLocationListener.get(i).onNewLocationReceived(
                    myValue);
        }
    }
}
}

そして、次のようにアクティビティに登録します。

 OnNewLocationListener onNewLocationListener = new OnNewLocationListener() {
            @Override
            public void onNewLocationReceived(float myValue) {

                //use your value here

                MyService.clearOnNewLocationListener(this);
            }
        };

        // start listening for new location
        MyService.setOnNewLocationListener(
                onNewLocationListener);

詳細については、次のリンクを参照してください: https://stackoverflow.com/a/7709140/779408

于 2013-01-14T13:22:54.083 に答える