finish() - onResume Problem

  • Antworten:3
Michael
  • Forum-Beiträge: 19

12.06.2012, 09:20:09 via Website

Hi zusammen,

ich habe ein kleines Problem beim Beenden meiner Activity.
Dies mache ich derzeit so:

1@Override
2 protected void onResume() {
3 // TODO Auto-generated method stub
4
5 if(updateIsRequired){
6 refreshCalendar();
7 }
8 super.onResume();
9
10 }
11
12
13 public void onButtonClick(View v){
14 final Intent intent = new Intent();
15 intent.putParcelableArrayListExtra ("resultlist", (ArrayList<? extends Parcelable>) m_driverlist);
16 intent.putExtra("planid", mPlanID);
17 if (getParent() == null) {
18 setResult(Activity.RESULT_OK, intent);
19 } else {
20 getParent().setResult(Activity.RESULT_OK, intent);
21 }
22 updateIsRequired = false;
23 finish();
24
25 }

Wenn ich auf meinen Beenden-Button klicke sollen verschiedene Werte als Ergebnis zurückgegeben werden. Mein Problem ist, dass finish() immer die onResume Methode aufruft und diese dort dann mit der Methode refreshCalendar() wieder meine alten Werte herstellt. Dann habe ich versucht mittels der globalen Variable "updateIsRequired" dies zu verhindern. Diese setze ich auch auf false, aber in der onResume-Methode steht diese dann wieder auf "true" und refreshCalendar() wird wieder durchlaufen...

Hab schon viel gesucht, gelesen und ausprobiert aber auf den Fehler bin ich bisher leider noch nicht gekommen

Hoffe ihr könnt mir helfen..

Grüße

Antworten
Michael
  • Forum-Beiträge: 19

12.06.2012, 10:41:22 via Website

habs gerade nochwas herausgefunden, bei finish() wohl meine aktuelle Activity beendet aber anschließend wieder onCreate durchlaufen und scheinbar wieder eine neue Activity erstellt. Aber warum nur?

Gruß

Antworten
Michael
  • Forum-Beiträge: 19

12.06.2012, 11:02:59 via Website

Eigentlich nicht besonderes. Ich starte halt aus meiner 1. Activity eine weitere (2. Activity) und werte anschließend das Ergebnis aus der 2. Activity aus:


Start 2. Activity
1public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
2 TextView date = (TextView)v.findViewById(R.id.date);
3 String day = date.getText().toString();
4 CalendearItem item = (CalendearItem) parent.getItemAtPosition(Integer.valueOf(day));
5 if(day.length()<2){
6 day = "0" + day;
7 }
8 if(date instanceof TextView && !date.getText().equals("")) {
9 if(item !=null){
10 ArrayList<Driver> driverlist = new ArrayList<Driver>();
11 driverlist.add(item.getDriver());
12 Intent intent = new Intent(mContext, ChangeDrive.class);
13 intent.putParcelableArrayListExtra ("alldriverlist", (ArrayList<? extends Parcelable>) m_driverlist);
14 intent.putParcelableArrayListExtra ("driverlist", (ArrayList<? extends Parcelable>) driverlist);
15 intent.putExtra("date", android.text.format.DateFormat.format(item.getDay() + "." + "MM.yyyy", month));
16 intent.putExtra("planid", mPlanID);
17 startActivityForResult(intent, CHANGE_DRIVER_REQUEST);
18 }else{
19 Intent intent = new Intent(mContext, ChangeDrive.class);
20 intent.putParcelableArrayListExtra ("alldriverlist", (ArrayList<? extends Parcelable>) m_driverlist);
21 intent.putExtra("date", android.text.format.DateFormat.format(day + "." + "MM.yyyy", month));
22 intent.putExtra("planid", mPlanID);
23 startActivityForResult(intent, CHANGE_DRIVER_REQUEST);
24 }
25 }
26
27 }
28 });

Auswertung Ergenis 2. Activity in meiner 1.Activity
1protected void onActivityResult(int requestCode, int resultCode, Intent data) {
2 super.onActivityResult(requestCode, resultCode, data);
3
4 if (requestCode == CHANGE_DRIVER_REQUEST) {
5 if (resultCode == RESULT_OK) {
6 extras = data.getExtras();
7 m_driverlist.clear();
8 m_driverlist = (ArrayList<Driver>) extras.get("list");
9 }
10 }
11 }

Danach läuft dann nichts mehr. Und wenn ich nun meinen Beenden-Button drücke, wird nach dem finish() wieder onCreate aufgerufen...

Gruß

— geändert am 12.06.2012, 11:04:24

Antworten