2013-07-23 2 views
1

하나의 사용자 정의보기가 일부 백엔드 로직에 의해 업데이트되는 응용 프로그램에서 작업하고 있습니다. 사용자 지정보기는 onResume() 메서드에서 정교하게 업데이트되지만 view.invalidate();까지 업데이트 할 수 없습니다. 버튼의 onclick 업데이트보기가 필요합니다.Android : GraphView가 onResume에서 업데이트되었지만 invalidate() 메소드로 실패했습니다

코드를 다음과 같이 사전에

public class ChartDemo extends Activity { 
private IDemoChart mChart; 

Button displayGraph, reloadGraph; 
LinearLayout linearLayout; 
View view; 

Random randomData, randomBattery; 
int data, battery; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mChart = new SalesStackedBarChart(); 

    reloadGraph = (Button) findViewById(R.id.reloadView); 

    linearLayout = (LinearLayout) findViewById(R.id.linearLayout); 

    view = new View(ChartDemo.this); 
    loadGraphWithValues(); 

    reloadGraph.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      view.invalidate(); 
      loadGraphWithValues(); 
      // view = mChart.execute(ChartDemo.this); 
     } 
    }); 

    linearLayout.addView(view); 
} 

public void loadGraphWithValues() { 
    data = generateDataValue(); 
    battery = generateBatteryValue(); 

    ListData list = new ListData(); 
    list.setData(data, battery); 

    SalesStackedBarChart.values.add(list); 

    view = mChart.execute(ChartDemo.this); 
} 

public int generateBatteryValue() { 
    // TODO Auto-generated method stub 
    randomData = new Random(); 
    return randomData.nextInt(100) + 1; 
} 

public int generateDataValue() { 
    // TODO Auto-generated method stub 
    randomBattery = new Random(); 
    return randomBattery.nextInt(100) + 1; 
} 

public class ListData { 
    double data; 
    double battery; 

    // getter and setter methods.. 
} 

} 

감사합니다 ..

답변

0
view.invalidate(); 
loadGraphWithValues(); 

이들은 아마 당신이 먼저 당신이 자신을 다시 그리기를 말해보기를 업데이트하기 때문에, 전환되어야한다. 또한 mChart은 무엇입니까? 뭔가 비동기식입니까?

편집 : 여기 같아요

view = mChart.execute(ChartDemo.this); 

새 뷰를 생성하지만 실제로 레이아웃에 첨부되지 않습니다. 레이아웃의 기존 뷰 대신 뷰를 반환하도록하십시오.

+0

답장을 보내 주셔서 감사합니다. mChart는 Bargraph의 인스턴스입니다. execute() 메소드는 그래픽보기 (즉 막대 그래프)를 반환합니다. –

+0

주어진 제안이 효과가 있었습니까? –

+0

아니요, 값이 목록에 삽입되지만 표시되지 않습니다. 응용 프로그램 그래프를 다시 시작하면 업데이트됩니다. –