timepicker - Android: TimePickerDialog - TimePickerDialog.OnTimeSetListener -
i newbie android. here again "simple" question. hope can me. want button displays timepicker in dialog. when set time in timepicker, selected time. using android support library , actionbarsherlock. here code:
addperiod.java
import android.app.alertdialog; import android.app.timepickerdialog; import android.content.dialoginterface; import android.os.bundle; import android.support.v4.app.dialogfragment; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.listview; import com.actionbarsherlock.app.actionbar; import com.actionbarsherlock.app.sherlockfragmentactivity; import com.actionbarsherlock.view.menuitem; public class addperiod extends sherlockfragmentactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.add_period); } public void showtimepickerdialog(view v) { dialogfragment newfragment = new timepickerfragment(); newfragment.show(getsupportfragmentmanager(), "timepicker"); } timepickerdialog.ontimesetlistener mtimesetlistener = new timepickerdialog.ontimesetlistener() { @override public void ontimeset(android.widget.timepicker view, int hourofday, int minute) { log.i("",""+hourofday+":"+minute); } }; } add_period.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="escoge hora" android:onclick="showtimepickerdialog" /> </linearlayout> timepickerfragment.java
import android.text.format.dateformat; import java.util.calendar; import android.app.dialog; import android.support.v4.app.dialogfragment; import android.app.timepickerdialog; import android.os.bundle; import android.os.handler; import android.os.message; import android.widget.timepicker; public class timepickerfragment extends dialogfragment implements timepickerdialog.ontimesetlistener { @override public dialog oncreatedialog(bundle savedinstancestate) { // use current time default values picker final calendar c = calendar.getinstance(); int hour = c.get(calendar.hour_of_day); int minute = c.get(calendar.minute); // create new instance of timepickerdialog , return return new timepickerdialog(getactivity(), this, hour, minute, dateformat.is24hourformat(getactivity())); } public void ontimeset(timepicker view, int hourofday, int minute) { // time chosen user } } but listener not being called. suggestions? perhaps has been answered after 30 minutes of searching, didn't find answer.thanks lot helping me.
in addperiod.java create timepickerdialog.ontimesetlistener far can see listener isn't used.
in timepickerfragment.java implement timepickerdialog.ontimesetlistener interface , pass fragment instance listener timepickerdialog nothing in implemented ontimeset() method in timepickerfragment.java. saying ontimeset() in timepickerfragment.java isn't called? have set breakpoint?
if manage ontimeset() called in fragment assume you're asking how pass time activity. if i'm correct i'd perfect place use event bus, instance using otto.
update: based on comments questions assume want way picked time in timepickerfragment addperiod. better approach in opinion use event bus (as mentioned above). decouple fragment activity. give answer works minimal changes code suggest pass listener fragment , use listener when create dialog:
timepickerfragment.java:
public class timepickerfragment extends dialogfragment { private timepickerdialog.ontimesetlistener listener; public timepickerfragment(timepickerdialog.ontimesetlistener listener) { super(); this.listener = listener; } @override public dialog oncreatedialog(bundle savedinstancestate) { // use current time default values picker final calendar c = calendar.getinstance(); int hour = c.get(calendar.hour_of_day); int minute = c.get(calendar.minute); // create new instance of timepickerdialog , return return new timepickerdialog(getactivity(), listener, hour, minute, dateformat.is24hourformat(getactivity())); } } as can see i've added constructor takes timepickerdialog.ontimesetlistener argument. listener used when timepickerdialog created. in our addperiod activity pass mtimesetlistener fragment when created:
public class addperiod extends sherlockfragmentactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.add_period); } public void showtimepickerdialog(view v) { dialogfragment newfragment = new timepickerfragment(mtimesetlistener); newfragment.show(getsupportfragmentmanager(), "timepicker"); } timepickerdialog.ontimesetlistener mtimesetlistener = new timepickerdialog.ontimesetlistener() { @override public void ontimeset(android.widget.timepicker view, int hourofday, int minute) { log.i("",""+hourofday+":"+minute); } }; }
Comments
Post a Comment