2014-04-07 2 views
0

나는 사용자가 날짜를 포함하여 데이터를 입력하는 팝업 대화 상자가 있습니다. 날짜를 선택하려면 날짜 선택 도구가있는 다른 창을 여는 버튼이 있습니다. 날짜를 선택하고 첫 번째 대화 상자로 돌아 오면 날짜 선택 도구를 두 번 열지 않으면 날짜가있는 텍스트 필드가 변경되지 않습니다. 첫 번째 대화 상자를 날짜 선택 도구 창에서 반환 한 후 바로 새로 고치거나 업데이트하는 방법은 무엇입니까?android에서 대화를 업데이트하는 방법

다음
public void addEntry(View view) { 
    final Dialog d = new Dialog(this); 
    d.setContentView(R.layout.dialog); 
    d.setTitle("Add Entry"); 
    d.setCancelable(true);  
    d.show(); 

    ... 

    chooseDate.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      String str = selectDate(); 
      date.setText(str); 
     } 
    }); 
} 

는 당신이 날짜 선택하는 것이 두 번째 창에 대한 코드 :

여기에 첫 번째 대화의 코드

public String selectDate(){ 

    final Dialog datePicker = new Dialog(this); 
    datePicker.setContentView(R.layout.choose_date); 
    datePicker.setTitle("Choose Date..."); 
    datePicker.setCancelable(true); 
    datePicker.show(); 

    Button selectFinalDate = (Button) datePicker.findViewById(R.id.selectDate); 
    final DatePicker dp = (DatePicker) datePicker.findViewById(R.id.datePicker1); 

    selectFinalDate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      strDateTime = (dp.getMonth() + 1) + "/" + dp.getDayOfMonth() + "/" + dp.getYear(); 
      datePicker.dismiss(); 
     } 
    }); 
    return strDateTime; 
}; 

감사합니다!

답변

0

클릭시 두 번째 대화 상자에 date.setText (datechoosen)를 삽입하면 textView 또는 버튼 또는 첫 번째 대화 상자에 날짜를 표시하는보기가 설정됩니다. 두 번째 대화 상자에서 액세스 할 수 없으면 정적으로 설정하고 액세스하기 전에 null이 아닌지 확인하십시오.

0

테스트하지는 않았지만 작동해야합니다.

... 
date.setText(str); 
view.invalidate(); // the view that you are showing in the dialog 
... 

그래서 당신의 코드에서이 업데이트 :

/** 
* global variable for your dialog view 
*/ 
View view =null; 

       // in your addEntry(View view) 
       ... 
       Dialog d = new Dialog(this); 
       view = LayoutInflater.from(this).inflate(R.layout.dialog, null); 
       d.setContentView(view); 
       ... 

       // selectDate() 
       ... 
       date.setText(str); 
       view.invalidate(); // the view that you are showing in the dialog 
       ... 

answer

참조
관련 문제