2014-03-05 3 views
0

내 메인 액티비티의 값을 커스텀 뷰로 전달해야합니다.액티비티에서 커스텀 뷰로의 값 전달

주요 활동에는 SensorEventListener가 있으므로 광 센서를 지속적으로 듣고 있습니다. onSensorChanged() 메서드에서 값을 읽었고 사용자 정의보기로 변경할 때마다이 값을 보내야합니다.

어떤 것이 이것이 가장 좋은 방법인지 모르겠습니다.

UPDATE -

방법이 주요 활동에 SensorEventListener에 대해 참조 :

public void setHandTarget(float temperature) { 
    if (temperature < minDegrees) { 
     temperature = minDegrees; 
    } else if (temperature > maxDegrees) { 
     temperature = maxDegrees; 
    } 
    handTarget = temperature; 
    handInitialized = true; 
    invalidate(); 
} 

것은 내가 정적 사용할 수 없습니다 : 나는 사용자 지정보기에 값을 전송해야

@Override 
public void onSensorChanged(SensorEvent event) { 
    float lumnes = event.values[0]; 
    GaugeView.setHandTarget(lumnes); 
} 

방법 참조 원인으로 인해 invalidate()를 호출 할 수 없습니다.

+0

하나의 활동에서 다른 활동으로 넘어 가고 있습니까? 또는 당신은 여전히 ​​귀하의 주요 활동에 있습니까? 일부 코드가 도움이 될 것입니다. –

+0

@William Riley 그들은 2 개의 다른 클래스입니다. 하나는 활동이고, 다른 하나는보기를 확장하는 사용자 정의보기입니다. – masmic

+0

아래 답변이 충분한 지 확실하지 않습니다. 그렇지 않은 경우 onSensorChange() 메소드를 게시하십시오. 더 구체적으로 편집하겠습니다. –

답변

0

코드를 보지 않고 내가 할 수있는 최선의 조언은보기에서 속성을 만들고 기본 활동 클래스에서 속성에 액세스 할 수있게하는 것입니다. 센서를 검사하는 방법에서는 생성 한 사용자 지정 View의 속성을 값으로 설정할 수 있습니다. 직접적으로 값을 전달하지 않고 직접 액세스합니다. 이 같은 센서 이벤트 리스너에서

public float sensorValue; 

액세스를 :

CustomView.sensorValue = sensorValue; 
+0

기본 게시물을 좀 더 구체적으로 업데이트했습니다. – masmic

3

당신은이 작업을 수행 할 수있는 당신의 가치를 가정

사용자 정의 뷰 클래스에 이런 식으로 뭔가를 추가, 부동입니다 :

public CustomView extends View { 
    ... 
    private float[] values; //this 

    //setter 
    public void setValues(float[] values) { 
    this.values = values; 
    } 

} 


public class MyActivity extends Activity implements SensorEventListener { 

private CustomView mCustomView; 
... 
    @Override 
    public void onSensorChanged(SensorEvent event) { 
     float[] values = event.values; 
     mCustomView.setValues(values); //pass the collected values to the view via setter 
    } 
} 
+0

This setValues ​​() 메서드를 정적으로 만들도록 요청합니다. 나는 메인 게시판을 업데이트했다 – masmic

+0

당신은 setter에서 완벽하게 – Daniel

+0

의 invalidate()를 호출 할 수있다. 나는 그것을하려고하고있다. 그리고 그것은'정적 뷰가 아닌 정적 메소드 invalidate()를 타입 뷰에서 만들 수 없다 '라고 말한다. – masmic