Dialog schließen führt zum Beenden der Aktivität

MyPanelActivity enthält eine recyclerView mit einer Liste von Elementen. Jeder Artikel hat ein Klickereignis. Dieser Klick öffnetDetailsActivity.

DetailsActivity hat einen floatingActionButton, der einen Vollbild-Dialog öffnet (meine KlasseDetailDialogFragment erweitertDialogFragment).

DetailDialogFragmenthat eine Up / Home-Taste mit einem Abbruch.

Das Problem: Wenn der Benutzer auf die Schaltfläche Nach oben klickt, wird der Dialog geschlossen, aber auchDetailsActivity verschwinden, und die App kehrt zumPanelActivity.

Möglicher Grund: Unter der Schaltfläche Nach oben des Dialogfelds befindet sich die Schaltfläche Nach oben desDetailsActivity. Ist es möglich, zwei Klickereignisse auszulösen, wenn sich ein Dialogfeld über einer Aktivität befindet und beide eine Nach-oben-Schaltfläche an derselben Stelle haben?

Edit: Um Code anzuzeigen.

Öffnen Sie DetailsActivity in PanelActivity (indem Sie auf ein Element in der recyclerView klicken).

Intent intent = new Intent(context, DetailsActivity.class);
intent.putExtra("headerCode", headerCode.getText());
context.startActivity(intent);

Up-Schaltfläche in DetailsActivity.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // Respond to the action bar's Up/Home button
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
}

Vollbild-Dialog in DetailsActivity öffnen.

private void showCreateDetailDialog() {
    FragmentManager fragmentManager = getSupportFragmentManager();
    DetailDialogFragment newFragment = new DetailDialogFragment();

    // The device is smaller, so show the fragment fullscreen
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    // For a little polish, specify a transition animation
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    // To make it fullscreen, use the 'content' root view as the container
    // for the fragment, which is always the root view for the activity
    transaction.add(android.R.id.content, newFragment)
            .addToBackStack(null).commit();
}

Und schließlich die Schaltfläche Nach oben in DetailDialogFragment.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.save) {
        validateForm();
        return true;
    } else if (id == android.R.id.home) {
        // handle close button click here
        dismiss();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage