In der vorherigen Aktivität verlorene Werte, wenn ich die Schaltfläche "Zurück" drückte, aber nicht, wenn this.finish () aufgerufen wird

Ich habe also ein komisches Problem. Ich habe 2 Aktivitäten, an denen ich arbeite. Eine der Aktivitäten zeigt eine ListView an, deren Daten über ein langes Extra erfasst werden, das ich verwende, um die Ergebnisse über eine WHERE-Klausel in der database.query abzurufen. Die andere Aktivität wird aufgerufen, wenn auf ein ListView-Element geklickt wird, sodass jemand der Datenbank etwas für die ListView hinzufügen kann.

Die Aktivitätsnamen sindDaysActivity.java (die Aktivität mit der Listenansicht) undDayAddActivity.java (Die Aktivität, bei der jemand einen Tag hinzufügen kann, der dann in der Liste angezeigt wirdDaysActivity.java Listenansicht).

Das Problem, das ich habe, ist, wenn ichfinish() DayAddActivity.java es geht zurück zuDaysActivity und die ListView ist immer noch voll besetzt. Allerdings, wenn ich die Zurück-Taste drückeDayAddActivity.java (Die Schaltfläche links neben dem Titel in der Aktionsleiste mit dem Symbol für meine App). Wenn Sie zu DaysActivity.java zurückkehren, ist die ListView leer / verschwunden.

Hier ist der Code für beide:

DaysActivity.java:

package com.gauvion.gfit;

import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class DaysActivity extends ListActivity {

    private DaysDataSource datasource;
    private SimpleCursorAdapter dataAdapter;
    private boolean isEditing = false;
    private Toast toast_deleted;
    private String[] columns = new String[] { MySQLiteHelper.COLUMN_NAME, MySQLiteHelper.COLUMN_DAY };
    private int[] to;
    private long routineDataID;
    private String routineDataName;

    @SuppressLint("ShowToast")
    @Override
    public void onCreate(Bundle savedInstanceState) {       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_days); 

        routineDataID = getIntent().getLongExtra("routineDataID", 0);
        routineDataName = getIntent().getStringExtra("routineDataName");
        setTitle(routineDataName);

        toast_deleted = Toast.makeText(this, "", Toast.LENGTH_SHORT);
        datasource = new DaysDataSource(this);
        datasource.open();

        Cursor cursor = datasource.fetchAllDays(routineDataID);
        to = new int[] { R.id.listitem_day_name, R.id.listitem_day_day };
        dataAdapter = new SimpleCursorAdapter(this, R.layout.listitem_day, cursor, columns, to, 0);
        setListAdapter(dataAdapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {     
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.activity_days, menu);
        return true;        
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {     
        Cursor cursor = datasource.fetchAllDays(routineDataID);
        switch (item.getItemId()) {
        case R.id.button_days_add:
            Intent startDayAdd = new Intent(this, DayAddActivity.class);
            startDayAdd.putExtra("routineDataID", routineDataID);
            this.startActivity(startDayAdd);
            return true;

        case R.id.button_days_edit:
            to = new int[] { R.id.listitem_day_edit_name, R.id.listitem_day_edit_day };
            dataAdapter = new SimpleCursorAdapter(this, R.layout.listitem_day_edit, cursor, columns, to, 0);
            setListAdapter(dataAdapter);

            isEditing = true;
            invalidateOptionsMenu();
            return true;

        case R.id.button_days_edit_done:
            to = new int[] { R.id.listitem_day_name, R.id.listitem_day_day };
            dataAdapter = new SimpleCursorAdapter(this, R.layout.listitem_day, cursor, columns, to, 0);
            setListAdapter(dataAdapter);

            isEditing = false;
            invalidateOptionsMenu();
            return true;

        default:
            return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);

        menu.findItem(R.id.button_days_edit).setVisible(!isEditing);
        menu.findItem(R.id.button_days_edit_done).setVisible(isEditing);

        return true;
    }

    @Override
    protected void onResume() {
        datasource.open();
        Cursor cursor = datasource.fetchAllDays(routineDataID);
        dataAdapter.changeCursor(cursor);

        super.onResume();
    }

    @Override
    protected void onPause() {
        datasource.close();
        super.onPause();
    }

} 

DayAddActivity.java:

package com.gauvion.gfit;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import android.support.v4.app.NavUtils;

public class DayAddActivity extends Activity {
    private RoutinesDataSource datasource;
    private EditText dayName;
    private Spinner dayDay;
    private Button saveButton;
    private long routineDataID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_day_add);
        routineDataID = getIntent().getLongExtra("routineDataID", 0);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_day_add, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public void cancelDay(View view) {
        this.finish();
    }

}

DascancelDay() Die Funktion wird aufgerufen, wenn eine Schaltfläche "Abbrechen" angeklickt wirdactivity_day_add.xml. Wie gesagt, wenn ich auf den "Abbrechen" -Button innerhalb von klickeDayAddActivity.javageht es zurück zuDaysActivity.java und die ListView ist in Ordnung. Alle Daten sind da. Wenn ich jedoch die Zurück-Schaltfläche in der Aktionsleiste drücke (die Schaltfläche mit einem Zurück-Pfeil und meinem App-Symbol neben dem Titel der Aktivität), wird die ListView fürDaysActivity.java ist leer / weg und der Titel ist auch leer (da dies auch durch einen Extra String-Wert erzeugt wird).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage