2013-07-23 3 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? Что-то асинхронно?

Edit: Я думаю, здесь:

view = mChart.execute(ChartDemo.this); 

вы создаете новый вид, но на самом деле не закрепив его на макете. Попробуйте поместить представление, возвращенное вместо существующего представления в вашем макете.

+0

спасибо, что ответили. mChart - это экземпляр барграфа. и его метод execute() возвращает графическое представление (т. е. гистограмма). –

+0

Работало ли данное предложение? –

+0

Нет, значения вставляются в список, но я не могу показать. При перезапуске графика приложения обновляется. –