Nein, also der Aufruf geschieht ja durch den Main-Activity. Wenn ich die App neu starte und in Main-Activity durch klicken eines Buttons in meine Sub-Activity wechsele dann wird das Diagramm ohne Probleme gezeichnet (siehe Bild 1). Aber wenn ich mit Zurück-Button in Main wechsele und dann wieder durch betätigen von Button in mein Sub-Activity springe wird es nciht mehr gezeichnet (siehe Bild 2).
Hier ist mein Quellcode:
Sub-Activity:
package com.test.testactivity;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Random;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.SeriesSelection;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import org.achartengine.tools.PanListener;
import org.achartengine.tools.ZoomEvent;
import org.achartengine.tools.ZoomListener;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Bitmap.CompressFormat;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class ChildActivity_2 extends Activity{
// public static final String TYPE = "type";
private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
private XYSeries mCurrentSeries;
private XYSeriesRenderer mCurrentRenderer;
private String mDateFormat;
private GraphicalView mChartView;
String tag = "LifeCycleEvents";
static double x = 0;
static double y = 0;
private Update mUpdateTask = new Update();
/*@Override
protected void onRestoreInstanceState(Bundle savedState) {
super.onRestoreInstanceState(savedState);
mDataset = (XYMultipleSeriesDataset) savedState.getSerializable("dataset");
mRenderer = (XYMultipleSeriesRenderer) savedState.getSerializable("renderer");
mCurrentSeries = (XYSeries) savedState.getSerializable("current_series");
mCurrentRenderer = (XYSeriesRenderer) savedState.getSerializable("current_renderer");
mDateFormat = savedState.getString("date_format");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("dataset", mDataset);
outState.putSerializable("renderer", mRenderer);
outState.putSerializable("current_series", mCurrentSeries);
outState.putSerializable("current_renderer", mCurrentRenderer);
outState.putString("date_format", mDateFormat);
}
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.child_activity_2);
initChart();
mUpdateTask.execute(this);
Log.d(tag,"In the onCreate() event CHILDACT2");
}
private void initChart(){
// Diagrammeigenschaften
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.TRANSPARENT); //Farbe Hintergrund von Diagramm - Transparent
mRenderer.setAxisTitleTextSize(16);
mRenderer.setChartTitleTextSize(20);
mRenderer.setLabelsTextSize(15);
mRenderer.setLegendTextSize(15);
mRenderer.setMargins(new int[] { 20, 30, 15, 0 });
mRenderer.setPointSize(5);
mRenderer.setXTitle("Time [ s ]");
mRenderer.setYTitle("Oxygen [ % ]");
mRenderer.setShowGrid(true);
mRenderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01)); //Farbe menu von Diagramm - Transparent
mRenderer.setYAxisMin(0);
mRenderer.setYAxisMax(100);
mRenderer.setClickEnabled(true);
mRenderer.setLabelsColor(Color.DKGRAY);
mRenderer.setGridColor(Color.DKGRAY);
mRenderer.setAxesColor(Color.DKGRAY);
//Legende
String seriesTitle = "Series " + (mDataset.getSeriesCount() + 1);
XYSeries series = new XYSeries(seriesTitle);
mDataset.addSeries(series);
mCurrentSeries = series;
XYSeriesRenderer renderer = new XYSeriesRenderer();
mRenderer.addSeriesRenderer(renderer);
renderer.setColor(Color.rgb(0,100,0));
mCurrentRenderer = renderer;
}
@Override
protected void onResume() {
super.onResume();
Log.d(tag,"In the onResume() event CHILDACT2");
initChart();
if (mChartView == null) {
LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(this, mDataset,mRenderer);
layout.addView(mChartView, new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
} else {
mChartView.repaint();
}
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
Log.d(tag,"In the onRestart() event CHILDACT2");
super.onRestart();
}
@Override
protected void onDestroy() {
Log.d(tag,"In the onDestroy() event CHILDACT2");
// TODO Auto-generated method stub
super.onDestroy();
finish();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
Log.d(tag,"In the onPause() event CHILDACT2");
super.onPause();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
Log.d(tag,"In the onStop() event CHILDACT2");
super.onStop();
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
Log.d(tag,"In the onStart() event CHILDACT2");
super.onStart();
}
protected class Update extends AsyncTask<Context, Integer, String> {
@Override
protected String doInBackground(Context... params) {
MockData random = new MockData();
int i = 0;
while (true) {
try {
Thread.sleep(1000);
x = x + 1;
y = random.myRandom(10, 100);
publishProgress(i);
i++;
} catch (Exception e) {
}
}
// return "COMPLETE!";
}
// -- gets called just before thread begins
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
mCurrentSeries.add(x, y);
// if (mChartView != null) {
mChartView.repaint();
// }
}
// -- called if the cancel button is pressed
@Override
protected void onCancelled() {
super.onCancelled();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}
}
Main -Activity:
package com.test.testactivity;
import android.os.Build;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
@SuppressLint("NewApi"
public class MainActivity extends Activity implements OnClickListener {
public ImageButton menueButton_1;
public ImageButton menueButton_2;
public ImageButton menueButton_3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
menueButton_1 = (ImageButton)findViewById(R.id.menueButton1);
menueButton_1.setOnClickListener(this);
menueButton_2 = (ImageButton)findViewById(R.id.menueButton2);
menueButton_2.setOnClickListener(this);
menueButton_3 = (ImageButton)findViewById(R.id.menueButton3);
menueButton_3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == menueButton_1.getId()){
Intent slideactivity = new Intent(MainActivity.this, ChildActivity_1.class);
Bundle bndlanimation = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.animation,R.anim.animation2).toBundle();
startActivity(slideactivity, bndlanimation);
}
else if(v.getId() == menueButton_2.getId()){
Intent slideactivity = new Intent(MainActivity.this, ChildActivity_2.class);
Bundle bndlanimation = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.animation,R.anim.animation2).toBundle();
startActivity(slideactivity, bndlanimation);
}
else if(v.getId() == menueButton_3.getId()){
Intent slideactivity = new Intent(MainActivity.this, ChildActivity_3.class);
Bundle bndlanimation = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.animation,R.anim.animation2).toBundle();
startActivity(slideactivity, bndlanimation);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}