java-如何在Android测验中实现计时器?

java-如何在Android测验中实现计时器?,第1张

概述我正在研究Android测验.我想在ImageView中添加计时器.在问题XML中,我想从“播放时的欢迎XML”按钮调用CountDownTimer.我只是通过在ImageView中添加这样的行来设置Questionxml中的onClickInQuestionXML<TextViewandroid:id="@+idextView1"android:layout_width

我正在研究Android测验.我想在ImageVIEw中添加计时器.在问题XML中,我想从“播放时的欢迎XML”按钮调用CountDownTimer.我只是通过在ImageVIEw中添加这样的行来设置Question xml中的onClick

In Question XML

<TextVIEw    androID:ID="@+ID/textVIEw1"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_above="@+ID/question"    androID:layout_centerHorizontal="true"    androID:background="@drawable/timer_bttn"     androID:onClick="onClick"/>

In Welcome xml

<button             androID:text="Play"             androID:ID="@+ID/playBtn"            androID:layout_wIDth="80dip"             androID:layout_alignParentRight="true"            androID:layout_height="wrap_content"            androID:paddingtop="5dip"             androID:paddingBottom="5dip"            androID:textcolor="#ffffff"            androID:background="@drawable/start_button" />

then i created TimerActivity

    public class TimerActivity extends Activity implements OnClickListener {private button startB;public TextVIEw text;@OverrIDepublic voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.question);startB = (button) this.findVIEwByID(R.ID.playBtn);startB.setonClickListener((OnClickListener) this);text = (TextVIEw) findVIEwByID(R.ID.textVIEw1);}@OverrIDepublic voID onClick(VIEw v) {    new CountDownTimer(30000, 1000) { // adjust the milli seconds here        public voID onTick(long millisUntilFinished) {        text.setText(""+String.format("%d min, %d sec",                         TimeUnit.MILliSECONDS.toMinutes( millisUntilFinished),                        TimeUnit.MILliSECONDS.toSeconds(millisUntilFinished) -                         TimeUnit.MINUTES.toSeconds(TimeUnit.MILliSECONDS.toMinutes(millisUntilFinished))));        }        public voID onFinish() {           text.setText("done!");        }     }.start();}   }

在这段代码中,我刚刚编写了计时器的代码来调用Image并在TimerActivity中实现代码.但是当我单击播放按钮时,我的计时器无法启动.我的播放按钮在不同的Activity中起作用.

我的logCat:-

!ENTRY org.eclipse.ui 4 0 2013-09-02 17:19:38.741!MESSAGE Unhandled event loop exception!STACK 0java.lang.IllegalArgumentException: Widget has the wrong parent    at org.eclipse.swt.SWT.error(SWT.java:4342)    at org.eclipse.swt.SWT.error(SWT.java:4276)    at org.eclipse.swt.SWT.error(SWT.java:4247)    at org.eclipse.swt.Widgets.Widget.error(Widget.java:468)    at org.eclipse.swt.Widgets.Control.setMenu(Control.java:3462)    at com.androID.ddmuilib.logcat.LogCatPanel.handleEvent(LogCatPanel.java:1042)    at org.eclipse.swt.Widgets.Eventtable.sendEvent(Eventtable.java:84)    at org.eclipse.swt.Widgets.Widget.sendEvent(Widget.java:1053)    at org.eclipse.swt.Widgets.Widget.sendEvent(Widget.java:1077)    at org.eclipse.swt.Widgets.Widget.sendEvent(Widget.java:1062)    at org.eclipse.swt.Widgets.Widget.showMenu(Widget.java:1472)    at org.eclipse.swt.Widgets.Widget.wmContextMenu(Widget.java:1574)    at org.eclipse.swt.Widgets.Control.WM_CONTEXTMENU(Control.java:4673)    at org.eclipse.swt.Widgets.table.WM_CONTEXTMENU(table.java:5972)    at org.eclipse.swt.Widgets.Control.windowProc(Control.java:4532)    at org.eclipse.swt.Widgets.table.windowProc(table.java:5913)    at org.eclipse.swt.Widgets.display.windowProc(display.java:4989)    at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)    at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)    at org.eclipse.swt.Widgets.table.callWindowProc(table.java:564)    at org.eclipse.swt.Widgets.table.callWindowProc(table.java:430)    at org.eclipse.swt.Widgets.Widget.wmRbuttonUp(Widget.java:2395)    at org.eclipse.swt.Widgets.Control.WM_RbuttonUP(Control.java:5134)    at org.eclipse.swt.Widgets.Control.windowProc(Control.java:4596)    at org.eclipse.swt.Widgets.table.windowProc(table.java:5913)    at org.eclipse.swt.Widgets.display.windowProc(display.java:4989)    at org.eclipse.swt.internal.win32.OS.dispatchMessageW(Native Method)    at org.eclipse.swt.internal.win32.OS.dispatchMessage(OS.java:2546)    at org.eclipse.swt.Widgets.display.readAnddispatch(display.java:3756)    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1053)    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)    at org.eclipse.ui.internal.Workbench.run(Workbench.java:588)    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)    at org.eclipse.ui.internal.IDe.application.IDEApplication.start(IDEApplication.java:124)    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(UnkNown Source)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(UnkNown Source)    at java.lang.reflect.Method.invoke(UnkNown Source)    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)    at org.eclipse.equinox.launcher.Main.main(Main.java:1414)

提前致谢

解决方法:

我认为您的计时器实现没有任何问题

但是你有这个

 text = (TextVIEw) this.findVIEwByID(R.ID.button1);

你有这个

   <ImageVIEwandroID:ID="@+ID/button1"

所以应该

 <TextVIEwandroID:ID="@+ID/textVIEw1" 

text = (TextVIEw) findVIEwByID(R.ID.textVIEw1);

请尝试以下.点击按钮,计时器开始计时.

public class MainActivity extends Activity implements OnClickListener {private button startB;public TextVIEw text;@OverrIDepublic voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);startB = (button) this.findVIEwByID(R.ID.button1);startB.setonClickListener((OnClickListener) this);text = (TextVIEw) findVIEwByID(R.ID.textVIEw1);}@OverrIDepublic voID onClick(VIEw v) {    new CountDownTimer(30000, 1000) { // adjust the milli seconds here        public voID onTick(long millisUntilFinished) {        text.setText(""+String.format("%d min, %d sec",                         TimeUnit.MILliSECONDS.toMinutes( millisUntilFinished),                        TimeUnit.MILliSECONDS.toSeconds(millisUntilFinished) -                         TimeUnit.MINUTES.toSeconds(TimeUnit.MILliSECONDS.toMinutes(millisUntilFinished))));        }        public voID onFinish() {           text.setText("done!");        }     }.start();}   }

检查此链接

对于1.5以下的Java版本或不完全支持TimeUnit类的系统,可以使用以下公式:

int seconds = (int) (milliseconds / 1000) % 60 ;int minutes = (int) ((milliseconds / (1000*60)) % 60);int hours   = (int) ((milliseconds / (1000*60*60)) % 24);

编辑:

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent" >    <TextVIEw        androID:ID="@+ID/textVIEw1"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_alignParenttop="true"        androID:layout_centerHorizontal="true"        androID:layout_margintop="35dp"        androID:text="TextVIEw" />    <button        androID:ID="@+ID/button1"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_alignleft="@+ID/textVIEw1"        androID:layout_below="@+ID/textVIEw1"        androID:layout_margintop="68dp"        androID:text="button" /></relativeLayout>
总结

以上是内存溢出为你收集整理的java-如何在Android测验中实现计时器?全部内容,希望文章能够帮你解决java-如何在Android测验中实现计时器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1095235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存