关于在fragment中刷新textview的问题

SUMI_SUMI 2019-09-17 05:49:10
我在一个fragment1中
执行button按键事件的时候,需要刷新textview的内容
大概如下

btnC.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v)
{
textview1.settext ="1111111";
//一段操作
textview1.settext ="2222222";
//一段操作
textview1.settext ="3333333";
//一段操作
textview1.settext ="4444444";
}

实际上,以上代码实现的时候,按钮按下界面假死,textview1只会显示最后的“4444444”
于是我加入下面代码

HandlerThread handlerThread;
private static String TT = "";

class HandlerThread extends Thread
{
Handler mHandler;
HandlerThread(Handler h)
{
mHandler = h;
}
public void run()
{
byte status;
Message msg;
while (true)
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e) {e.printStackTrace();}
{
msg = handler.obtainMessage(0, "");
mHandler.sendMessage(msg);
}
}
}
}

final Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
switch(msg.what)
{
case 0:

if(TV.length()>0)
{
textview1.setText(TV);
}
break;

default:

break;
}
}
};

btnC.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v)
{

TT="1111111";
//一段操作
TT ="2222222";
//一段操作
TT ="3333333";
//一段操作
TT ="4444444";
}

在onCreate中加入

handlerThread = new HandlerThread(handler);
handlerThread.start();

依然不行
只能看到最后显示的“44444444”
是刷新太快了?
还是什么原因?
...全文
197 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
只为搞笑 2019-09-18
  • 打赏
  • 举报
回复
你在主线程同一代码块里调用设置,可不就是只有最后一个生效吗。你得通过子线程回调主线程更新、或者使用Handler的postDelay方法才能实现你想的那种效果
亲爱的Joe 2019-09-18
  • 打赏
  • 举报
回复
引用 楼主 SUMI_SUMI 的回复:
我在一个fragment1中 执行button按键事件的时候,需要刷新textview的内容 大概如下

		btnC.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View v)
			{
                        textview1.settext ="1111111";
                        //一段操作
                        textview1.settext ="2222222";
                        //一段操作
                        textview1.settext ="3333333";
                        //一段操作
                        textview1.settext ="4444444";
}
实际上,以上代码实现的时候,按钮按下界面假死,textview1只会显示最后的“4444444” 于是我加入下面代码

	HandlerThread handlerThread; 	
        private static String TT = "";

	class HandlerThread extends Thread
	{
		Handler mHandler;
		HandlerThread(Handler h)
		{
			mHandler = h;
		}
		public void run()
		{
			byte status;
			Message msg;
			while (true)
			{
				try
				{
					Thread.sleep(100);
				}
				catch (InterruptedException e) {e.printStackTrace();}
				{
						msg = handler.obtainMessage(0, "");
						mHandler.sendMessage(msg);
				}
			}
		}
	}

	final Handler handler = new Handler()
	{
		public void handleMessage(Message msg)
		{
			switch(msg.what)
			{
				case 0:

					if(TV.length()>0)
					{
						textview1.setText(TV); 
					}
					break;

				default:

					break;
			}
		}
	};

		btnC.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View v)
			{

                        TT="1111111";
                        //一段操作
                        TT ="2222222";
                        //一段操作
                        TT ="3333333";
                        //一段操作
                       TT ="4444444";
}
在onCreate中加入

			handlerThread = new HandlerThread(handler);
			handlerThread.start();
依然不行 只能看到最后显示的“44444444” 是刷新太快了? 还是什么原因?
你直接Thread.sleep(5000); 不就知道是不是因为刷新太快了么

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧