thread-线程和 NotFound resource exception

作者:用户 来源:互联网 浏览:325 次 时间:2016-03-03 11:21:41

androidthread

thread-线程和 NotFound resource exception - 摘要: 线程和NotFoundresourceexception我现在遇见一个问题是NotFoundresourceexception。我确信resource-id和我设置的是一样的,但总是不对。第一行"fi

问题描述

线程和 NotFound resource exception

我现在遇见一个问题是 NotFound resource exception。我确信 resource-id和我设置的是一样的,但总是不对。第一行"findViewById( R.id.editText1 )" 可以很好的运行,可以在editText1中看到 "start!" 标签。
但是第二行在线程中,有错误信息:09-29 00:17:45.103: E/AndroidRuntime(347): android.content.res.Resources$NotFoundException: String resource ID #0x0

如何解决这个问题呢?

EditText editText = ( EditText ) findViewById( R.id.editText1 );
editText.setText( "start!" );
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        for (int i = 0; i <= 10; i++) {
            final int value = i;
            try {
                Thread.sleep( 1000 );
             } catch ( InterruptedException e ) {
                e.printStackTrace();
             }
            handler.post( new Runnable() {
               @Override
               public void run() {
                   EditText editText = ( EditText ) findViewById( R.id.editText1 );
                   editText.setText( value );
               }
           } );
        }
    }
 };
 Thread thread = new Thread( runnable );
thread.start();

解决方案

value 是一个整数值。传递一个整数值到 setText 方法,你可以通过 resource ID 从 strings.xml 文件中找到一个 String。如果你想显示一个数字,你需要把它解析成:String: Integer.toString(value)

解决方案二:

不能多线程更新UI
这也正是为啥都通过handler来通信处理了
handler通信有多种方法,给你个简单的事例:
更新UI:

Handler mHandler;//public
//......
final EditText editText = ( EditText ) findViewById( R.id.editText1 );
myHandler = new Handler() {    
    public void handleMessage(Message msg) {     
         switch (msg.what) {     
              case 110:
                  Bundle b = msg.getData();  
                  String name = b.getString("name"); 
                  editText.setText(name);
              break;
         }     
         super.handleMessage(msg);     
    }     
};

发送数据:

//thread run
public void run() {   
  Message message=new Message();  
  Bundle b = new Bundle();  
  b.putString("name", "zhangSam"); //send a string
  message.what=110; 
  message.setData(b);
  myHandler.sendMessage(message); 
}
解决方案三:

handler.post run里的EditText editText = ( EditText ) findViewById( R.id.editText1 );改成
EditText editText = ( EditText ) youractivity.this.findViewById( R.id.editText1 );

【云栖快讯】阿里云栖开发者沙龙(Java技术专场)火热来袭!快来报名参与吧!  详情请点击
云栖社区(yq.aliyun.com)为您免费提供thread-线程和 NotFound resource exception相关信息,包括 android thread 的信息 ,所有thread-线程和 NotFound resource exception版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_81350,您可以点击thread-线程和 NotFound resource exception-手机站访问。
KubeCon2018西雅图在前线(一):云原生概念已经深入人心
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航