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
).
DetailDialogFragment
hat 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);
}