我试图让我的用户界面,以便对事件(如按下按钮,螺纹完井等)实时的Android(显然)反应。Android的用户界面问题
我有一个按钮的布局,并且所述按钮中的一个被用来从使用FTP远程计算机复制未知数量的文件。这一切的FTP部分工作得很好,但我只是无法找到一种方式让用户知道事情的状态:
状态,因为我看到他们是: 1)选择“下载文件”从“正常”菜单。 2)按下确认(下载过程可能会很长,也许我不希望错误地选择它 - 但是现在它是一个独立的线程,可能需要重新认为 3)下载 4)下载。完成,恢复正常菜单
我希望能够工作的一件事是在单独的线程中运行FTP代码,并使用thread.isAlive()构造,等待线程完成并更改显示因此。
我一直没能够做的唯一事情就是显示的文件正在下载。不管我怎么努力,显示从“确认下载”视图的“标准菜单”视图跳跃。 (请注意,这些都不是查看由于Android定义它们以任何方式。)
代码如下:
Btn.setOnClickListener (new View.OnClickListener()
{
@Override
public void onClick (View v)
{
hideTempWidgets();
Btn01.setVisibility (View.GONE);
Btn02.setVisibility (View.GONE);
Btn03.setVisibility (View.GONE);
verfBtn.setVisibility (View.VISIBLE);
verfBtn.setText ("Press to Verify");
verfBtn.setOnClickListener (null);
verfBtn.setOnClickListener (new View.OnClickListener()
{
@Override
public void onClick (View v)
{
runOnUiThread (new Runnable()
{
public void run()
{
verfBtn.setText ("Downloading...");
}
});
Thread temp = new Thread (new Runnable()
{
public void run()
{
try
{
FileTransfer.getFiles (getAddr().trim());
}
catch (SQLException e)
{ }
}
}, "ftp");
temp.start();
while (temp.isAlive());
verfBtn.setVisibility (View.GONE);
Btn01.setVisibility (View.VISIBLE);
Btn02.setVisibility (View.VISIBLE);
Btn03.setVisibility (View.VISIBLE);
alert (true, VIBE_BLIP);
}
});
}
});
有没有人面对这一点,并拿出一个体面的解决方案?
什么是没有发生的是setText“下载...”,或者至少,如果是这样,而不是当我想要它,太快看不到......最后,特别令人沮丧的是,该命令当我删除代码来运行FTP线程时正常工作。
感谢, R.
阅读'AsyncTasks'!它们比大多数时候更有用,而不仅仅是扩展'Thread'。 – binnyb
我有,但党大部分我读过的东西很难理解!你知道我可以遵循的任何非常简单的例子吗? – Rich