Android切换按钮

时间:2013-01-22 09:31:44

标签: android

我是Android开发的初学者,我正在尝试创建一个应用程序,其要求是在文本框中显示随机数,并继续显示带有一秒或任何可编程延迟的随机数,直到切换按钮为止处于“开启”状态。有没有人对此提出建议,或者如果可能的话,共享部分源代码会很好。

我要求的另一个建议是关于任何一本好书,也可以从内部细节开始进行android开发。如果Android上有任何类型的书,我们可以使用其他开发语言(例如,完全引用Java,完全引用C,C ++等)

提前致谢

3 个答案:

答案 0 :(得分:1)

我已阅读一些Andoid书籍,我强烈建议Android in Practice。阅读完之后,你就会知道大多数人在StackOverflow上提问时都会从本书中获益。它的价格非常优惠,作者肯定知道他们在写什么。

编辑:关于实施(UPDATED,消除布尔值)

public final class MyActivity extends Activity implements Runnable {
    private Handler uiThreadHandler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // basics
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_activity_layout);
        // find text widget here, store in editText as also required in Chintan's solution
        // get the current activity's handler, it's the UI thread
        uiThreadHandler = new Handler();
        // initiate the updates if that's the initial state
        scheduletUpdate();
        // register callbacks for button etc as required also in Chintan's solution
    }
    @Override
    public void run() {
        //update your editText field here -- this is run in the UI thread so it's safe!
        scheduleUpdate();
    }
    private void scheduleUpdate() {
        uiThreadHandler.postDelayed(this, 1000); // 1000 ms
    }
    // etc, some stuff missing
}

编辑:关于如何停止执行run()方法的计划,您可以使用以下代码,这应该从Handler documentation中明显看出(UPDATED,消除布尔值) ):

uiThreadHandler.removeCallbacks(this);

答案 1 :(得分:0)

作为一个初学者,我建议你通过http://www.mybringback.com/series/android-basics/这个教程,你将能够做你自己提出的问题。他们也有易于理解的视频教程。

答案 2 :(得分:0)

使用Thread之类的,

class MyThread extends Thread
{
    private volatile boolean isRunning = false;

    public synchronized void requestStop() {
        isRunning = true;
    }

    @Override
    public void run() {
        //place code here...
        try {
            while (!isRunning) {
                // do your coding
                handler.sendMessage(handler.obtainMessage(WhatAbout.CHANGE_TEXT.ordinal(), 0, 0));
                Thread.sleep(1000 * 1); //1000 ms = 1 sec
            }


        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

现在定义以下代码来处理多条消息。

public enum WhatAbout {
    CHANGE_TEXT
}

public WhatAbout[] wa = WhatAbout.values();

然后使用[Handler] [1],它可以帮助您传达BackgroundThreadUIThread。 如果不使用处理程序,则无法更改UI

将以下代码放入onCreate方法。

handler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    if (msg.what < wa.length) {
    switch (wa[msg.what]) 
    {
    case CHANGE_TEXT:
         editText.setText(randomVariable);
         break;
    }
  }
};

当您关闭开关时,请使用以下代码停止线程。

if (thread != null) {
    thread .requestStop();
    thread = null;
}