2017-03-24 2 views
1

TimePickerDialog에 문제가 있습니다. RelativeLayout 확장 클래스를 사용하는 것은 내 자신의보기 (MyViewClass)입니다. 이 수업에는 "시간 선택"이라는 버튼과 선택한 날짜를 표시하는 TextView 버튼이 있습니다. 해당 버튼을 클릭 한 후 mTimePickerFragment.show(((Activity) context).getFragmentManager(), "TAG");MyViewClass을 사용하여 언급 된 TimePickerDialog를 표시합니다. MyViewClass에는 내 TextView 설정을위한 setTimeLabel()이라는 메서드가 있습니다.안드로이드 - 조각 클래스에서 메서드 호출

이 내 TimePickerDialog 클래스 :

import android.app.Dialog; 
import android.app.DialogFragment; 
import android.app.TimePickerDialog; 
import android.os.Bundle; 
import android.text.format.DateFormat; 
import android.widget.TimePicker; 
import java.util.Calendar; 

public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 
private int mHour; 
private int mMinute; 

public TimePickerDialog mTimePickerDialog; 


@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    final Calendar c = Calendar.getInstance(); 

    if (mTimePickerDialog == null) { 
     mHour = c.get(Calendar.HOUR_OF_DAY); 
     mMinute = c.get(Calendar.MINUTE); 
    } 

    mTimePickerDialog = new TimePickerDialog(getActivity(), this, mHour, mMinute, DateFormat.is24HourFormat(getActivity())); 
    return mTimePickerDialog; 
} 

public static TimePickerFragment newInstance() { 
    return new TimePickerFragment(); 
} 

@Override 
public void onTimeSet(TimePicker timePicker, int hour, int minute) { 
    init(hour, minute); 

/* 
I want to call method which update my TextView 
*/ 
} 

public void init(int hour, int minute) { 
    mHour = hour; 
    mMinute = minute; 

    if (mTimePickerDialog != null) { 
     mTimePickerDialog.updateTime(mHour, mMinute); 
    } 
} 

public int getHour() { 
    return mHour; 
} 

public int getMinute() { 
    return mMinute; 
} 
} 

내가 필요로하는 모든 시간이 변경됩니다 (MyViewClass에 위치) 메서드를 호출하는 것입니다 - onTimeSet() 방법. 어떻게해야합니까?

+0

인터페이스에 익숙합니까? 그들은'TextView' 클래스에서 메쏘드를 호출 할 때 편리해야합니다. – redead

+0

프래그먼트가 액티비티 클래스에서 생성 될 때 인터페이스를 사용하는 방법을 알고 있고 액티비티에있는 메서드를 호출하려고하지만 뷰 클래스의 프래그먼트를 파우치 할 때 호출하는 방법을 모릅니다. bac 메소드를 호출합니다. 그 pleace 도움말을하는 방법을 알고 있다면. – Giks91

+0

사용자 정의보기 클래스에 대한 추가 코드를 제공 할 수 있습니까? – redead

답변

0

TimePickerDialog 팝업 경우, 예를 들어 onTimeSet 내부 시간을 설정할 수 있으며, 사용자는 onTimeSet 방법

@Override 
public void onTimeSet(TimePicker timePicker, int hour, int minute) { 
//so you can do anything with the selected time here 
//for example 
// textViewTime.setText(hour.getText().toString()); 
// Toast.makeText(getApplicationContext(),"Selected Minute"+minute.getText().toString(),Toast.LengthShort); 
init(hour, minute); 
+0

네,하지만 TextView는 제가 말했듯이 다른 클래스 인 MyViewClass에 있습니다. 그래서 어떻게 조각으로부터 setTextView()를 호출 할 수 있습니까 (클래스에 넣었습니까?)? – Giks91

+0

@ Giks91 오 ..이게이 활동의 ​​전체 코드인가요? 확실하지는 않지만 인터페이스를 연결해야 할 수도 있습니다. 두 조각 사이의 의사 소통을위한 인터페이스를보십시오. 나는 인터페이스에 대한 지식이 없기 때문에 당신을 도울 수 없습니다. ;) – Queendevelopers

+0

필자는 활동과 프래그먼트간에 comunicate 할 때 인터페이스를 사용하는 방법을 알고 있지만이 경우 어떻게해야하는지 모릅니다. – Giks91

0

당신은 예를 들어, 이러한 모든 물건을 쓸 필요가 없습니다를 호출 한 후, 때 사용자가 시간을 selectes 버튼을 클릭

new_year = cal.get(Calendar.YEAR); 
    new_month = cal.get(Calendar.MONTH); 
    new_day = cal.get(Calendar.DAY_OF_MONTH); 
    new_hour = cal.get(Calendar.HOUR_OF_DAY); 
    new_minute = cal.get(Calendar.MINUTE); 
} 

"시간 설정"시간을 선택하는 데 사용합니다. 날짜 선택기

를 들어

TimePickerDialog timePickerDialog = new TimePickerDialog(this, 
        new TimePickerDialog.OnTimeSetListener() { 
         @Override 
         public void onTimeSet(TimePicker view, int hourOfDay, 
               int minute) { 
          _time.setText(hourOfDay+" : "+minute); 
         } 
        }, new_hour, new_minute, false); 
      timePickerDialog.show(); 

DatePickerDialog datePickerDialog = new DatePickerDialog(this, 
        new DatePickerDialog.OnDateSetListener() { 
         @Override 
         public void onDateSet(DatePicker view, int year, 
               int monthOfYear, int dayOfMonth) { 
          new_year = year; 
          new_month = monthOfYear; 
          new_day = dayOfMonth; 
          _date.setText(new_day+"/"+(new_month+1)+"/"+new_year); 
         } 
        }, new_year, new_month, new_day); 
      datePickerDialog.show(); 

당신은 당신의 활동이 옆에 .... new_hour, new_minute, new_day를 사용할 수 있습니다.

+0

고맙습니다. 가능합니다.하지만 원하는대로이 코드를 별도의 클래스로 유지하는 것이 좋습니다. . – Giks91

+0

@ Giks91 좋아요, 답을 올리면 올리십시오. 어떻게 할 것인지 배울 것입니다. 도움이 될 것입니다.^_ ^. – Queendevelopers

+0

확실한 답변을 찾으려면 도움이 될 내 질문에 투표하십시오. – Giks91

관련 문제