Meine enthält eine RecyclerView mit einer Liste von Elementen. Jeder Artikel verfügt über ein Klickereignis. Dieser Klick öffnet sich DetailsActivity
.Dialogfeld "Ablehnen" bewirkt, dass Aktivität beendet wird
DetailsActivity
hat einen FloatingActionButton, der einen Vollbilddialog öffnet (meine Klasse DetailDialogFragment
erweitert DialogFragment
).
DetailDialogFragment
hat eine Up/Home-Taste mit einer Kündigung.
Das Problem: Wenn der Benutzer einen Klick über die Up-Taste führt, wird das Dialogfeld geschlossen, aber auch DetailsActivity
verschwinden, und die App kehrt zum zurück.
Mögliche Ursache: Unter der Up-Taste des Dialogfelds befindet sich die Up-Taste des . Ist es möglich, zwei Klickereignisse auszulösen, wenn sich ein Dialog über einer Aktivität befindet und beide an derselben Stelle eine Hoch-Taste haben?
Edit: einige Code zu erhalten.
Öffnen Sie DetailsActivity von PanelActivity (Klicken auf ein Element in der RecyclerView).
Intent intent = new Intent(context, DetailsActivity.class);
intent.putExtra("headerCode", headerCode.getText());
context.startActivity(intent);
Hoch-Taste 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 Up 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);
}
Post einige Quellcode – Krish
@Krish Ich habe meine Post bearbeitet. – JCarlos