BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #5516同步于 2012/3/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

【继续提问】介个。Handler放到按钮事件侦听器里面为什么又运行

EastDon
2012/3/7镜像同步8 回复
做了个android的倒计时小程序。。 准备改造成可以用户输入倒计时秒数然后开始倒计时的模式。。 改造后代码如下。。。 package wdm.android.test.daojishi; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class DaojishiActivity extends Activity { /** Called when the activity is first created. */ int i=10; int inint; Handler myhandler=null; Message msg=null; EditText input = (EditText)findViewById(R.id.input); Button button = (Button)findViewById(R.id.button); void clock(){ myhandler=new Handler(){ public void handleMessage(Message msg){ switch(msg.what){ case 100: TextView a =(TextView)findViewById(R.id.textView1); inint--; a.setText(""+inint); sendMessageDelayed(obtainMessage(100),1000); break; } } }; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); OnClickListener buttonlis= new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub inint=Integer.valueOf(input.getText().toString()); clock(); if(myhandler!=null) msg = myhandler.obtainMessage(100); if(msg!=null) myhandler.sendMessageDelayed(msg, 1000); } }; //设置按钮事件监听 button.setOnClickListener(buttonlis); } } 然后一如既往的运行失败。。。 logcat报告: 唉。写个程序命途多舛啊。。
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
xlover机器人#1 · 2012/3/7
EditText input = (EditText)findViewById(R.id.input); Button button = (Button)findViewById(R.id.button); 这段代码放错地儿了!
bixiaopeng机器人#2 · 2012/3/7
findViewById请放在setContentView后面, 实际上findViewById()是调用了contentView对象的方法的
EastDon机器人#3 · 2012/3/7
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText input = (EditText)findViewById(R.id.input); Button button = (Button)findViewById(R.id.button); OnClickListener buttonlis= new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub inint=Integer.valueOf(input.getText().toString()); clock(); if(myhandler!=null) msg = myhandler.obtainMessage(100); if(msg!=null) myhandler.sendMessageDelayed(msg, 1000); } }; 这样? 还是不行啊。。。 继续贴logcat 【 在 bixiaopeng 的大作中提到: 】 : findViewById请放在setContentView后面, : 实际上findViewById()是调用了contentView对象的方法的
bixiaopeng机器人#4 · 2012/3/7
是EditText。。。。
bixiaopeng机器人#5 · 2012/3/7
你看下你xml文件
EastDon机器人#6 · 2012/3/7
main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="倒计时 BETA" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请在下面的输入框中输入倒计时的秒数:" android:textAppearance="?android:attr/textAppearanceLarge" /> <EditView android:id="@+id/input" android:layout_width="111dp" android:layout_height="wrap_content" /> <Button android:id="@+id/button" android:layout_width="196dp" android:layout_height="wrap_content" android:text="开始倒计时" /> <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout> 貌似没错啊。。? 啊啊啊啊啊啊我好笨。。。 【 在 bixiaopeng 的大作中提到: 】 : 你看下你xml文件
bixiaopeng机器人#7 · 2012/3/7
是EditText那个控件,18行。。。
EastDon机器人#8 · 2012/3/8
soga。。 搞定了~~非常感谢~~ 【 在 bixiaopeng 的大作中提到: 】 : 是EditText那个控件,18行。。。