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

Dialog 에서 엑티비티의 텍스트 뷰로 값을 보내는 방법??

0 추천
public class NumberPickerDialog extends Dialog {
 
    NumberPicker np;
 
    public NumberPickerDialog(Context context){
        super(context);
 
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog_number_picker);
 
        np = (NumberPicker) findViewById(R.id.numberPicker);
        np.setMinValue(1);
        np.setMaxValue(50);
        np.setWrapSelectorWheel(false);
        np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                Log.i("Old Value", String.valueOf(oldVal));
                Log.i("New Value", String.valueOf(newVal));
            }
        });
    }
}
 
위 같은 Number Picker 소스가 있습니다.
onValueChange는 피커에서 값이 바뀔때마다 old value와 new value를 찍어주는데요
이 값들을 프레그먼트 혹은 엑티비티로 넘기고 싶습니다.. 
 
이 Dialog를 호출한 프레그먼트의 소스는 아래와 같습니다.
 
member.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                numberPickerDialog.show();
            }
        });
 
멤버 버튼을 누르면 show()로 띄워주게 되있씁니다.
 
show()로 띄웠고, 다이얼로그에서 dimiss()로 닫았을때 값을 호출한쪽의 콜백함수로 받을 수 있을...거같은데 
어케하는지 모르겠네요 ㅠㅠㅠㅠㅠㅠㅠ
 
OnDismissListener로 dismiss 이벤트 콜백함수는 찾았지만.. 값을 주고받고하는건 없네요 ㅠ
 
헬프 부탁드립니당..

 

cmsypub (820 포인트) 님이 2015년 7월 7일 질문
cmsypub님이 2015년 7월 7일 수정

3개의 답변

0 추천
액티비티에 메소드하나 추가해서 텍스트뷰 설정 작업만들어놓고,

다이얼로그에서 해당 메소드 불러서 써도되고,

변수 바로 불러서 써도되고

간단하게 생각하셔요.
어렵군요 (5,920 포인트) 님이 2015년 7월 7일 답변
0 추천

NumberPickerDialog 안에 멤버변수로

private int mNewValue;

를 선언하시구

메소드로

public int getNewValue() {
    return mNewValue;
}

를 선언하신 다음에

 

np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            Log.i("Old Value", String.valueOf(oldVal));
            Log.i("New Value", String.valueOf(newVal));
            mNewValue = newVal;
        }
});

newVal의 값을 대입하여 주시고

 

액티비티에서 다이얼로그 인스턴스에서 메소드를 사용하여 값을 가져오시면 될 것 같습니다.

taejun (7,240 포인트) 님이 2015년 7월 7일 답변
0 추천
굳이 콜백할 필요있나요?

텍스트뷰를 전역변수로 선언하면 끝 아닐런지
컵받침 (5,500 포인트) 님이 2015년 7월 7일 답변
...