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;
}
}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.