2011-08-24 60 views
1

我有一些問題,改變的ImageView的資源當我點擊一個項目的資源時,強行關閉。 我知道,任何圖形更新應該在UI線程來完成,我已經試過兩種方法都沒有成功:改變ImageView的

...我的代碼沒有一個處理程序:

public class AvatarPicker extends Activity { 

ImageView iv; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

public void clicked(View v){ 
    iv = (ImageView) findViewById(v.getId()); 
    iv.setImageResource(R.drawable.avatar_0); 
}} 

...我的一個代碼處理器和可運行:

public class AvatarPicker extends Activity { 

ImageView iv; 
private Handler mHandler; 

private Runnable updateImg = new Runnable() { 
    @Override 
    public void run() { 
     iv.setImageResource(R.drawable.avatar_0); 
    } 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mHandler = new Handler(){}; 

} 

public void clicked(View v){ 
    iv = (ImageView) findViewById(v.getId()); 
    mHandler.post(updateImg); 
} 

}

我已在佈局XML的onClick以「點擊」並給予所有的可點擊的圖像 唯一身份。當我把Log.d()幾乎在代碼中的任何地方,我都注意到它在iv.setImageResource(R.drawable.avatar_0);命令處停止。

有人可以幫助我在這裏嗎?我錯過了什麼?由於

下面是一些額外的logcat信息:

06-17 19:23:09.877: INFO/ActivityManager(1184): Process com.google.android.apps.maps:FriendService (pid 4580) has died. 
06-17 19:23:09.907: INFO/ActivityManager(1184): Displayed activity weldeborn.avatar/.AvatarPicker: 1008 ms (total 1008 ms) 
06-17 19:23:10.077: DEBUG/ddm-heap(4602): Got feature list request 
06-17 19:23:10.157: DEBUG/dalvikvm(1701): GC freed 2115 objects/112440 bytes in 99ms 
06-17 19:23:12.607: DEBUG/AndroidRuntime(4602): Shutting down VM 
06-17 19:23:12.607: WARN/dalvikvm(4602): threadid=3: thread exiting with uncaught exception (group=0x40026160) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602): Uncaught handler: thread main exiting due to uncaught exception 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602): java.lang.NullPointerException 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at weldeborn.avatar.AvatarPicker$1.run(AvatarPicker.java:21) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at android.os.Handler.handleCallback(Handler.java:587) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at android.os.Handler.dispatchMessage(Handler.java:92) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at android.os.Looper.loop(Looper.java:123) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at android.app.ActivityThread.main(ActivityThread.java:4370) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at java.lang.reflect.Method.invoke(Method.java:521) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602):  at dalvik.system.NativeStart.main(Native Method) 
06-17 19:23:12.627: ERROR/SemcCheckin(4602): Get crash dump level : java.io.FileNotFoundException: /data/semc-checkin/crashdump 
06-17 19:23:12.627: WARN/ActivityManager(1184): Unable to start service Intent { act=com.sonyericsson.android.jcrashcatcher.action.BUGREPORT_AUTO cmp=com.sonyericsson.android.jcrashcatcher/.JCrashCatcherService (has extras) }: not found 
06-17 19:23:12.627: INFO/Process(1184): Sending signal. PID: 4602 SIG: 3 
06-17 19:23:12.627: INFO/dalvikvm(4602): threadid=7: reacting to signal 3 
06-17 19:23:12.627: ERROR/dalvikvm(4602): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
06-17 19:23:12.667: ERROR/SemcCheckin(1687): Get Crash Level : java.io.FileNotFoundException: /data/semc-checkin/crashdump 
06-17 19:23:15.557: DEBUG/WifiService(1184): ACTION_BATTERY_CHANGED pluggedType: 2 
06-17 19:23:17.547: DEBUG/WifiService(1184): ACTION_BATTERY_CHANGED pluggedType: 2 
06-17 19:23:22.707: DEBUG/dalvikvm(1852): GC freed 5128 objects/468256 bytes in 150ms 

是正在橙/紅的第一行是這三個:

06-17 19:23:12.607: WARN/dalvikvm(4602): threadid=3: thread exiting with uncaught exception (group=0x40026160) 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602): Uncaught handler: thread main exiting due to uncaught exception 
06-17 19:23:12.617: ERROR/AndroidRuntime(4602): java.lang.NullPointerException 
+1

請發表您的例外 – Egor

+0

的logcat的形象是什麼被點擊?你的ImageView或其他視圖?如上所述,請發佈您的LogCat。 – hooked82

+0

有沒有更好的方法來粘貼LOGCAT信息...這是一種難以閱讀的方式。感謝您幫助 – Weldeborn

回答

1

一般的代碼是好的,你不需要一個處理程序,因爲您更改主要活動的資源。

我認爲問題是,你從v.getId得到ImageView的()

是對的ImageView的onclick?您可以直接((ImageView的)V).setImageResource(...),或獲得在onCreate方法

+0

傢伙是在onClick爲實際的圖像上,索裏忘了說, – Weldeborn

+0

如果我解決您的問題請註明誰接受的答案,請回答;) – Aracem

+1

嗨!我試過你的「((ImageView)v).setImageResource(...)」方法,它工作。謝謝! 但我真的想知道爲什麼一開始沒有工作。 你會讓你接受答案。 :) – Weldeborn