thread-线程和 NotFound resource exception

问题描述

线程和 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 );

时间: 2024-10-03 18:46:55

thread-线程和 NotFound resource exception的相关文章

thread-java Thread线程tickets问题

问题描述 java Thread线程tickets问题 刚学thread,怎么控制台输出会有重复的数目,求大神解答 public class Ticket implements Runnable{ public static int count = 5; private String name; public void run(){ for(int i=0;i<=4;i++){ try{ Thread.sleep(1000); }catch(Exception e){ e.printStackT

Android中断并重启一个Thread线程的简单方法

这里简单的总结下(大概思路,没调试,可能会有错!): MyThread.java pulbic class MyThread implemets Thread{ @overide public void run{ while(!Thread.interrputed()){ } } } xxx.java Thread mThread = new MyThread(); public static void startThread(){ mThread = new MyThread(); mThre

你知道Thread线程是如何运作的吗?

[引自CoorChice的博客]背景介绍 我们在Android开发过程中,几乎都离不开线程.但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做到的呢?Looper.Handler.MessageQueue究竟在这背后进行了怎样的运作.本期,让我们一起从Thread开始,逐步探寻这个完美的线程链背后的秘密. 注意,大部分分析在代码中,所以请仔细关注代码哦! 从Thread的创建流程开始 在这一个环节,我们将一起一步步的分析Thread

Thread 线程

1.线程的状态 java的线程是通过java.lang.Thread类来实现的. 1.1创建 调用完构造函数后,线程就为创建状态.  1.2就绪 调用start()方法后,所处的状态. 1.3运行 正常的运行. 1.4阻塞 资源等待的状态. 1.5死亡 run()方法执行完毕后,该线程就死掉了.注意不能再次调用此线程的start()方法. 2.常用函数 java.lang.Thread.Thread(Runnable target, String name) 创建新线程,并指定线程的名字. ja

1.10. Thread 线程

1.10.1. 实现异步执行 public void testThread() throws Exception { try { Thread sendmail = new Thread(new Runnable() { @Override public void run() { // Sendmail log.info("Sendmail OK"); } }); sendmail.setName("sendmail"); sendmail.start(); } c

在Android中使用Handler和Thread线程执行后台操作

大家都知道,在PC上的应用程序当需要进行一些复杂的数据操作,但不需要界面UI的时候 ,我们会为应用程序专门写一个线程去执行这些复杂的数据操作.通过线程,可以执行例如 :数据处理.数据下载等比较耗时的操作,同时对用户的界面不会产生影响.在Android应用 程序开发中,同样会遇到这样的问题.当我们需要访问网络,从网上下载数据并显示在我们 的UI上时,就会启动后台线程去下载数据,下载线程执行完成后将结果返回给主用户界面线 程. 对于线程的控制,我们将介绍一个Handler类,使用该类可以对运行在不同

Java 里的thread (线程)简介

在Java里 thread 就是线程的意思. 说到线程的概念, 自然离不开另外两个词: 程序和进程. 从最基本的程序讲起: 一. 什么是程序(Program) 所谓程序, 就是1个严格有序的指令集合. 程序规定了完成某一任务时,计算机所需要做的各种操作, 以及操作的顺序. 1.1 单道程序运行环境 所谓单道程序环境就是指, 计算机除了操作系统之外, 只允许运行1个用户程序. 以前的DOS系统就是1个典型的单道程序运行环境. 单道程序有如下特点: 1. 资源的独占性: 任何时候, 内存内只有1个用

java中thread线程start和run的区别_java

最近看到一个题目,代码如下: 复制代码 代码如下: public static void main(String args[]) {Thread t = new Thread() {public void run() {pong();}}; t.run();System.out.println("ping");}static void pong() {System.out.println("pong");} 问,结果会输出什么? 我运行了很多次,结果都是pong p

thread线程栈size及局部变量最大可分配size【转】

转自:http://blog.csdn.net/sunny04/article/details/46805261 版权声明:本文为博主原创文章,未经博主允许不得转载. 进程是操作系统的最小资源管理单元, 线程是操作系统最小的执行单元. 一个进程可以有多个线程, 也就是说多个线程分享进程的资源,包括栈区,堆区,代码区,数据区等. [cpp] view plain copy sundh@linhaoIPTV:~$ ulimit -a   core file size          (blocks