2017-09-19 18 views
0

사용자가 변경할 수있는 EditText가있는 조각이 있습니다. 데이터가 변경된 경우onphause에서 모달 대화 상자를 구현하는 가장 좋은 방법을 찾으십시오.

은뿐만 아니라 내가 다시 도구 모음 (너무 물리적 뒤로 가기 버튼)

사용자가 다시 명중

, 나는 확인 버튼을하고 있다면 - 나는 대화 열고 사용자를 요청해야 "변경 사항을 저장 하시겠습니까?" 클릭하고 그에 따라 행동하십시오 (긍정적 또는 부정적 대답).

데이터를 저장하는 가장 좋은 장소는 어쩌면 내가 잘못 생각한 부분입니다.이 단편의 onPause에 있습니다.

대화 상자에 문제가 있습니다. 모달이 아니며 질문을 표시하고 사용자 반응을 기다리는 동안 그 아래의 단편이 사라지고 이전에 스택에서 돌아옵니다. 사용자가 선택을 할 때까지 대화 상자에서 "onPause를 일시 중지"해야합니다. 그것을하기에 쉬운 (또는 가장 정확한) 방법은 무엇입니까?

@Override 
public void onPause() { 
    if (!(text.getText().toString().equals(user.getName()))) 
    { 
     new MaterialDialog.Builder(getActivity()) 
       .title("Save changes?") 
       .content("You changed you personal details, save changes?") 
       .cancelable(false) 
       .positiveText("Save") 
       .negativeText("Discard") 
       .onPositive(new MaterialDialog.SingleButtonCallback() { 
        @Override 
        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { 
         save(); 
        }}) 
       .show(); 
    } 
    super.onPause(); 
} 

나는 onPause 전에하고 싶은 경우에 - 나는 툴바의 뒤로 버튼과 물리적 뒤로 버튼을 잡을해야합니다 -이 너무 많은 일을 보인다. 우아한 방법을 찾고 있습니다.

는 활동이 배경으로 이동할 때

답변

0

onPause가 호출 해 주셔서 감사합니다 (더 이상 화면에 표시되지 않습니다).

앱이 화면을 벗어나기 전에 대화 상자를 표시하려면 활동의 "onBackPressed"기능을 무시할 수 있습니다.

@Override 
public void onBackPressed() { 
    performBackPressed(); 
} 

public void performBackPressed(){ 
    //show your dialog here 
    //call finish(); when done to close app 
} 

툴바의 뒤로 버튼을 누를 때마다 performBackPressed() 메서드를 호출 할 수 있습니다.

다시 버튼을 눌렀을 때 프래그먼트에서 팝업을 표시하려고하는 경우 활동에서 해당 메소드를 재정의해야하고 다시 누를 때마다 프래그먼트를 알려야합니다.

내 응용 프로그램에는 모든 조각이 들어있는 컨테이너가 있습니다. 나는이 조각의 방법은 onBackPressed()을 불러 난 그냥가 방금 조각에 그 전화가

YourFragmentClass curFrag = (YourFragmentClass) fragmentManager.findFragmentById(R.id.fragment_container); 

: 나는 현재 활성화 된 조각을 얻기 위해이 코드를 사용합니다.

+0

조각입니다. 그것은 onBackPressed가 없습니다. – Shmuel

+0

답변을 업데이트했습니다. – swerly