2012-08-09 2 views
1

사용자가 단추를 눌렀을 때 사용자에게 보여주고 싶은 TimePickerDialog가 있습니다. 그러면 시간을 선택하여 (현재 시간이 아닌 다른 시간으로) 설정할 수 있습니다. 현재 버튼을 누르면 현재 시간이 TextView 및 Toast에 표시됩니다. 또한 화면의 중앙에있는 작은 상자와 어두워 진 화면이 나타납니다. TimePickerDialog가 사용자에게 표시되지 않습니다.TimePickerDialog가 표시/표시되지 않습니다.

다음은 코드입니다.

import java.util.Calendar; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.Dialog; 
import android.app.TimePickerDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.support.v4.app.DialogFragment; 
import android.support.v4.app.FragmentActivity; 
import android.text.format.DateFormat; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.TimePicker; 
import android.widget.Toast; 

public class AddAlarmActivity extends FragmentActivity implements TimePickerDialog.OnTimeSetListener, TimePickerDialog.OnDismissListener { 

Button setTime; 
public int hour_local; 
public int minute_local; 
public Dialog onCreateDialog; 
public TimePicker timePicker; 
public TextView displayAlarm; 

static final int TIME_DIALOG_ID = 999; 

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_alarm); 
    //add a TextView thing to this part 

    setTime = (Button) findViewById(R.id.button_set_time); 
    displayAlarm = (TextView) findViewById(R.id.tvDisplayTime); 

    setTime.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      onCreateDialog(savedInstanceState); 
      showTimePickerDialog(timePicker); 
      displayAlarm.setText(hour_local + ":" + minute_local); 
     } 
    }); 


} 

public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the current time as the default values for the picker 

    final Calendar c = Calendar.getInstance(); 
    hour_local = c.get(Calendar.HOUR_OF_DAY); 
    minute_local = c.get(Calendar.MINUTE); 

    Context context = getApplicationContext(); 
    CharSequence text = hour_local + ":" + minute_local; 
    int duration = Toast.LENGTH_LONG; 

    Toast toast = Toast.makeText(context, text, duration); 
    toast.show(); 

    // Create a new instance of TimePickerDialog and return it 
    return new TimePickerDialog(getApplicationContext(), this, hour_local, minute_local, 
      DateFormat.is24HourFormat(getApplicationContext())); 
} 

public void showTimePickerDialog(View v) { 
    DialogFragment newFragment = new DialogFragment(); 
    newFragment.show(getSupportFragmentManager(), "timePicker"); 
} 


public void onDismiss(DialogInterface dialog){ 

    System.out.println("oui c'est très bon !"); 

} 

public void onTimeSet(TimePicker view, int hour_l, int minute_l) { 
    hour_local = hour_l; 
    minute_local = minute_l; 
    System.out.println("voila"); 
} 
} 

답변

2

당신이 그 일의 개발자 사이트 방식으로 수행하는 것이 내가 조언을 것입니다 :

  • 대화 조각을

    public static class TimePickerFragment extends DialogFragment 
             implements TimePickerDialog.OnTimeSetListener { 
    
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
        // Use the current time as the default values for the picker 
        final Calendar c = Calendar.getInstance(); 
        int hour = c.get(Calendar.HOUR_OF_DAY); 
        int minute = c.get(Calendar.MINUTE); 
    
        // Create a new instance of TimePickerDialog and return it 
        return new TimePickerDialog(getActivity(), this, hour, minute, 
          DateFormat.is24HourFormat(getActivity())); 
    } 
    
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
        // Do something with the time chosen by the user 
    } 
    } 
    
  • 전화에서이 방법을 처리하는 정적 클래스를 만듭니다 당신의 클릭 수신기의 버튼 :

    public void showTimePickerDialog(View v) { 
        DialogFragment newFragment = new TimePickerFragment(); 
        newFragment.show(getSupportFragmentManager(), "timePicker"); 
    } 
    

소스 here.

+0

감사는 - 당신은, 당신은 나를 도왔다. 나는 다른 사람들이 참조 할 수 있도록 내 자신의 해결책을 아래에 포함시킬 것이다. – Dan

0
public class AddAlarmActivity extends FragmentActivity { 

Button setTime; 
public static int hour_local; 
public static int minute_local; 
public Dialog onCreateDialog; 
public TimePicker timePicker; 
public static TextView displayAlarm; 
public static int hour_alarm; 
public static int minute_alarm; 

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_alarm); 

    setTime = (Button) findViewById(R.id.button_set_time); 
    displayAlarm = (TextView) findViewById(R.id.tvDisplayTime); 

    final Calendar c = Calendar.getInstance(); 
    hour_local = c.get(Calendar.HOUR_OF_DAY); 
    minute_local = c.get(Calendar.MINUTE); 
    displayAlarm.setText(hour_local + ":" + minute_local); 

    setTime.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      showTimePickerDialog(timePicker); 

     } 
    }); 
} 

public void onTimeSet(TimePicker view, int hour_l, int minute_l) { 
// intentionally blank 
} 

public void showTimePickerDialog(View v) { 
    DialogFragment newFragment = new TimePickerFragment(); 
    newFragment.show(getSupportFragmentManager(), "timePicker"); 
} 

/*New static class*/ 
public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 

    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current time as the default values for the picker 

     final Calendar c = Calendar.getInstance(); 
     hour_local = c.get(Calendar.HOUR_OF_DAY); 
     minute_local = c.get(Calendar.MINUTE); 

     Context context = getActivity(); 
     CharSequence text = hour_local + ":" + minute_local; 
     int duration = Toast.LENGTH_LONG; 

     Toast toast = Toast.makeText(context, text, duration); 
     toast.show(); 

     // Create a new instance of TimePickerDialog and return it 
     return new TimePickerDialog(getActivity(), this, hour_local, minute_local, 
       DateFormat.is24HourFormat(getActivity())); 
    } 

    public void onTimeSet(TimePicker view, int hour_l, int minute_l) { 
     hour_alarm = hour_l; 
     minute_alarm = minute_l; 

     displayAlarm.setText(hour_alarm + ":" + minute_alarm); 
     } 

} 
} 
0
TimePickerDialog dialog = new TimePickerDialog(this,OnTimeSet,DateTime.Now.Hour,DateTime.Now.Minute,true); 
dialog.Show(); 

void OnTimeSet (object sender, TimePickerDialog.TimeSetEventArgs e) 
{ 

} 
관련 문제