2013-10-08 3 views
4

я взял оригинальный TimePicker-Source от Android DevelopersTimepicker от разработчиков Android не статичен разрешено

и вставить его в новом классе в Android Studio. Android Studio выдает ошибку «Модификатор« статический »здесь не разрешен». Что не так? Вот источник:

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 
    } 
} 

И btw: есть ли простой способ использовать timepicker в активности? Почти все примеры здесь работают с «showDialog()», который лишен.

+1

Java основы ... Google для: когда мы должны использовать статические для классов ява – Selvin

ответ

7

Введенный образец неявно предполагал, что вы добавляли этот код внутри другого Activity или Fragment в качестве внутреннего класса. Если это не то, что вы делаете, удалите из него static. Обратите внимание, что связь между DialogFragment, когда она находится во внешнем классе, немного утомительна (вам нужно будет использовать интерфейс для общения туда и обратно).

Что касается вашего второго вопроса, чтобы показать диалоговое использовать что-то вроде:

DialogFragment dialog = new MyDialogFragment(); 
dialog.show(getFragmentManager(), "MyDialog"); 
0

Прежде всего, благодаря Kasra!

Я также узнал, что вы должны поместить его в фрагмент диалога. Но это от API 11 и выше (мой будет поддерживать API 5). Их можно использовать, установив пакет совместимости в Android Studio. Так что я жду депрессии, может быть, в API 20 мое приложение устарело :-)

1

вы пытаетесь вставить вышеуказанное содержимое параллельно замедлению класса активности, на самом деле вышеуказанный код должен быть внутренним классом.

public class NewCaseEntry extends AppCompatActivity {} 
public static class TimePickerFragment extends ... {} 

Это неправильно, это должно быть

public class NewCaseEntry extends AppCompatActivity { 
    public static class TimePickerFragment extends ... {} 
} 
Смежные вопросы