Dialog schließt aktuelle Activity

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Dialog schließt aktuelle Activity

    Hallo sehr geehrte Community Member,

    ich habe ein Problem bei meiner App. Auf der Mainactivity habe ich ein DrawerLayout implementiert. So weit so gut, funktioniert, öffnet mit den Buttons eine neue Activity.
    In dieser neu geöffneten Activity, besteht nun die Möglichkeit ein neues Objekt in der RecyclerView anzulegen. Die Daten greife ich aus einem Dialog ab, welcher die Klasse AppCompatDialogFragment extendet.
    Daten abgreifen, erstellen des Objektes in der Datenbank ist soweit kein Problem. Klicke ich jedoch auf "Ok" beim Dialog, um die Daten zu speichern, schließt sich der Dialog UND ich werde auf die Mainactivity
    zurück geschickt. Ich möchte jedoch nur, dass ich auf der aktuellen Activity bleibe und die RecyclerView aktualisiere.

    Jemand eine Idee warum dies passiert?


    =====================================
    Spoiler anzeigen

    Java-Quellcode: Activity

    1. public class Unit_Activity extends AppCompatActivity implements Unit_Dialog_Add.Unit_Dialog_Listener {
    2. private Unit_Adapter adapter;
    3. FloatingActionButton buttonAddUnit;
    4. Animation rotateClose, rotateOpen;
    5. boolean isOpen = false;
    6. private String userId;
    7. @Override
    8. protected void onCreate(Bundle savedInstanceState) {
    9. super.onCreate(savedInstanceState);
    10. setContentView(R.layout.activity_unit);
    11. initAddUnit();
    12. setUpRecyclerView();
    13. }
    14. private void setUpRecyclerView(){
    15. Query query = callRef.orderBy("unit_name",Query.Direction.DESCENDING);
    16. FirestoreRecyclerOptions<Unit_Model> options = new FirestoreRecyclerOptions.Builder<Unit_Model>()
    17. .setQuery(query, Unit_Model.class )
    18. .build();
    19. adapter = new Unit_Adapter(options);
    20. RecyclerView recyclerView = findViewById(R.id.unit_recycler_view);
    21. recyclerView.setHasFixedSize(true);
    22. recyclerView.setLayoutManager(new LinearLayoutManager(this));
    23. recyclerView.setAdapter(adapter);
    24. new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
    25. ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
    26. @Override
    27. public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
    28. return false;
    29. }
    30. @Override
    31. public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
    32. switch (direction){
    33. case ItemTouchHelper.LEFT:{
    34. adapter.deleteUnit(viewHolder.getAdapterPosition());
    35. break;
    36. }
    37. case ItemTouchHelper.RIGHT:{
    38. // edit
    39. break;
    40. }
    41. }
    42. }
    43. @Override
    44. public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
    45. new RecyclerViewSwipeDecorator.Builder(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
    46. .addSwipeLeftBackgroundColor(ContextCompat.getColor(Unit_Activity.this, R.color.colorDelete))
    47. .addSwipeLeftActionIcon(R.drawable.ic_delete)
    48. .addSwipeRightBackgroundColor(ContextCompat.getColor(Unit_Activity.this, R.color.colorEdit))
    49. .addSwipeRightActionIcon(R.drawable.ic_baseline_edit_24)
    50. .create()
    51. .decorate();
    52. super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
    53. }
    54. }).attachToRecyclerView(recyclerView);
    55. recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener(){
    56. @Override
    57. public void onScrolled(RecyclerView recyclerView, int dx, int dy){
    58. if (dy > 0)
    59. buttonAddUnit.hide();
    60. else if (dy < 0)
    61. buttonAddUnit.show();
    62. }
    63. });
    64. }
    65. // app im Vordergrund
    66. @Override
    67. protected void onStart() {
    68. super.onStart();
    69. adapter.startListening();
    70. }
    71. // app im Hintergrund
    72. @Override
    73. protected void onStop() {
    74. super.onStop();
    75. adapter.stopListening();
    76. }
    77. public void openDialog(){
    78. Unit_Dialog_Add unit_dialog_add = new Unit_Dialog_Add();
    79. unit_dialog_add.show(getSupportFragmentManager(), "unit dialog");
    80. }
    81. private void initAddUnit() {
    82. buttonAddUnit = findViewById(R.id.button_add_unit);
    83. rotateClose = AnimationUtils.loadAnimation(this, R.anim.rotate_close_anim);
    84. rotateOpen = AnimationUtils.loadAnimation(this, R.anim.rotate_open_anim);
    85. buttonAddUnit.setOnClickListener(new View.OnClickListener(){
    86. @Override
    87. public void onClick(View view) {
    88. switch (view.getId()){
    89. case R.id.button_add_unit:{
    90. animateAddUnit();
    91. openDialog();
    92. break;
    93. }
    94. }
    95. }
    96. });
    97. }
    98. private void animateAddUnit(){
    99. if (isOpen){
    100. buttonAddUnit.startAnimation(rotateClose);
    101. isOpen = false;
    102. } else {
    103. buttonAddUnit.startAnimation(rotateOpen);
    104. isOpen = true;
    105. }
    106. }
    107. @Override
    108. public void applyInfos(String unit_name, String unit_location, String unit_callname) {
    109. unitRef.add(new Unit_Model(1, unit_name, unit_location, unit_callname));
    110. Toast.makeText(this,"Einheit erstellt!", Toast.LENGTH_SHORT).show();
    111. finish();
    112. animateAddUnit();
    113. }
    114. @Override
    115. public void changeButton() {
    116. animateAddUnit();
    117. }
    Alles anzeigen
    Spoiler anzeigen

    Java-Quellcode: Dialog Klasse

    1. public class Unit_Dialog_Add extends AppCompatDialogFragment {
    2. private EditText edit_unit_name;
    3. private EditText edit_unit_location;
    4. private EditText edit_unit_district;
    5. private Unit_Dialog_Add.Unit_Dialog_Listener unit_dialog_listener;
    6. @NonNull
    7. @Override
    8. public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    9. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    10. LayoutInflater inflater = getActivity().getLayoutInflater();
    11. View view = inflater.inflate(R.layout.dialog_unit_add, null);
    12. builder.setView(view)
    13. .setTitle("Fahrzeugdaten")
    14. .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
    15. @Override
    16. public void onClick(DialogInterface dialogInterface, int i) {
    17. unit_dialog_listener.changeButton();
    18. }
    19. })
    20. .setPositiveButton("ok", new DialogInterface.OnClickListener() {
    21. @Override
    22. public void onClick(DialogInterface dialogInterface, int i) {
    23. String unit_name = edit_unit_name.getText().toString();
    24. String unit_location = edit_unit_location.getText().toString();
    25. String unit_district = edit_unit_district.getText().toString();
    26. unit_dialog_listener.applyInfos(unit_name, unit_location, unit_district);
    27. }
    28. });
    29. edit_unit_name = view.findViewById(R.id.edit_unit_name);
    30. edit_unit_location = view.findViewById(R.id.edit_unit_location);
    31. edit_unit_district = view.findViewById(R.id.edit_unit_district);
    32. return builder.create();
    33. }
    34. @Override
    35. public void onAttach(@NonNull Context context) {
    36. super.onAttach(context);
    37. try {
    38. unit_dialog_listener = (Unit_Dialog_Add.Unit_Dialog_Listener) context;
    39. } catch (ClassCastException e) {
    40. throw new ClassCastException(context.toString() + " must implement Vehicle_Dialog_Listener");
    41. }
    42. }
    43. public interface Unit_Dialog_Listener{
    44. void applyInfos(String unit_name, String unit_location, String unit_district);
    45. void changeButton();
    46. }
    Alles anzeigen