마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

메인에서 버튼 클릭시 프래그먼트 원상태로 되돌리기

+1 추천

일단 메인엑티비티에 저장 버튼과 삭제 버튼이 있는데 삭제버튼을 누르면 현재 보고있는 프래그먼트를 만들어둔 원상태로 돌리고 싶은데 잘 안됩니다... 프래그먼트는 3개가 있고 R.id.frame에 각 각 add 후 각 A,B,C 버튼 누를 시 나오게 show hide hide 이런 식으로 해놨습니다. 삭제 버튼 누르면 밑에 코드 다이얼로그가 나옵니다. 

각 버튼 이름을 save 버튼을 누르면  다이얼로그로 바로 수정하게 하려고 sharedpreference를 사용했습니다. 

문제는 A가 눌렸다라는 걸 value로 구분하고 삭제 버튼 누르면 다이얼로그로 진짜 삭제할거냐 띄우고, A만 처음 상태 B,C는 사용하던거 그대로 두고 싶은데 이걸 어떻게 해야할까요?? 여러분들의 조언이 필요합니다. 하...비기너라 열심히 하고는 있는데 참 어렵네요. 잡힐듯 말듯 근데 더럽게 안됩니다;;;

밑에 코드는 지금 하다가 도저히 안돼서 일단 올려봅니다. 접근 방식을 다르게 해야하나봐요..

public void show_delete_dialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("삭제하시겠습니까?");

        builder.setPositiveButton("삭제",
                new DialogInterface.OnClickListener() {
                    @SuppressLint("CommitTransaction")
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Frag1 fragment1 = new Frag1();
                        Frag2 fragment2 = new Frag2();
                        Frag3 fragment3 = new Frag3();
                        sharedPreferences = getSharedPreferences("file",MODE_PRIVATE);
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        if (value == 1) {
                            getFragmentManager().beginTransaction().remove(fragment1).commit();
                            getFragmentManager().beginTransaction().show(fragment1);
                            getFragmentManager().beginTransaction().hide(fragment2);
                            getFragmentManager().beginTransaction().hide(fragment3);
                            sharedPreferences = getSharedPreferences("file", MODE_PRIVATE);
                            editor = sharedPreferences.edit();
                            editor.remove("form1_title");
                            form_button1.setText("서식A");
                            editor.apply();

                        } else if (value == 2) {
                            getFragmentManager().beginTransaction().replace(R.id.frame,fragment2).commit();
                            sharedPreferences = getSharedPreferences("file", MODE_PRIVATE);
                            editor = sharedPreferences.edit();
                            editor.remove("form2_title");
                            form_button2.setText(sharedPreferences.getString("form2_title", "서식B"));
                            editor.apply();


                        } else if (value == 3) {
                            getFragmentManager().beginTransaction().replace(R.id.frame, fragment3).commit();
                            sharedPreferences = getSharedPreferences("file", MODE_PRIVATE);
                            editor = sharedPreferences.edit();
                            editor.remove("form3_title");
                            form_button3.setText(sharedPreferences.getString("form3_title", "서식C"));
                            editor.apply();

    }
                        Toast.makeText(getApplicationContext(),"삭제 완료", Toast.LENGTH_SHORT).show();

}
                });

        builder.setNegativeButton("취소", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        builder.show();

    }

 

무삿 (170 포인트) 님이 2020년 7월 7일 질문

1개의 답변

0 추천
프래그먼트를 데이터베이스화 하셔서 저장 시키셨나요?

저장하고 새로 다시 프로그래먼트 호출시키면, 될거같은데,

질문의 의도가

프래그먼트를 지우거나 생성하고 갯수의 조작에 대해서 말씀하신건가요?

그렇다면, 위의 방법으로 가능하지 싶습니다.
오예 (520 포인트) 님이 2020년 7월 9일 답변
...