如何将值从处理程序传递给方法

时间:2014-04-10 20:43:37

标签: java android handler

我有一个问题,就是将从处理程序获取的值传递给同一个类中的另一个方法,如下所示,编辑:关于Class.myvalue自带的无法解析或者不是字段,我是否正确使用设置并获得?

public static double getMyValue() { return myValue; //OR return Class.myValue 
}

public static double setMyValue(double myValue) { Class.myValue = myValue;}
private final Handler mHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
        String data;
        switch (msg.what) {
        case MESSAGE_STATE_CHANGE:
            switch (msg.arg1) {
            case BluetoothRfcommClient.STATE_CONNECTED:
                mBTStatus.setText(R.string.title_connected_to);
                mBTStatus.append("\n" + mConnectedDeviceName);
                break;
            case BluetoothRfcommClient.STATE_CONNECTING:
                mBTStatus.setText(R.string.title_connecting);
                break;
            case BluetoothRfcommClient.STATE_NONE:
                mBTStatus.setText(R.string.title_not_connected);
                break;
            }
            break;
        case MESSAGE_READ: // todo: implement receive data buffering

            byte[] readBuf = (byte[]) msg.obj;


            String readMessage = new String(readBuf, 0, msg.arg1);

            Toast.makeText(GaitViewGraph.this, readMessage, Toast.LENGTH_SHORT).show();
            //double value = Double.parseDouble(readMessage); // convert byte array to double
            //changedvalue = value;
            double value = Double.parseDouble(readMessage);
            setMyValue(value);

在我将字节数组转换为double之后,我想将此“值”传递给此方法(getChangevalue)

 private double getChangevalue() {
       return getMyValue();
} 

那我该怎么办呢?或者有没有办法从处理程序中获取价值?请指教..

2 个答案:

答案 0 :(得分:1)

我认为,使用setter作为静态变量可以解决这个问题。 编辑: 只需添加此

private static double myValue = 0.0D;

public static void getMyValue() { return myValue; /*OR return Class.myValue*/ }
public static double setMyValue(double myValue) { Class.myValue = myValue;}

这是添加到处理程序之上。

然后使用它,调用setMyValue()来调用getMyValue();

答案 1 :(得分:1)

您使用handler.sendMessage()传递一些价值。

Message msg = handler.obtainMessage();
                Bundle bundle = new Bundle();

                bundle.putString("myKey", "abc");
                 msg.setData(bundle);
                 handler.sendMessage(msg);

您可以阅读更多here