今天寫 Android 的時候,改了一下 package name,移動了一些 class 到新的 package
可想而知的,程式就 run 不起來了
compile 可以過,但出現 runtime 例外
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo
原因是更改了 activity 所在的 package 名稱
但 AndroidManifest.xml 內沒同步修改到
將標籤 manifest 的 package 屬性設定為 activity 所在的 package 即可
2014年2月28日 星期五
Java 取得正在執行的 function(method) 名稱
如提。一行以蔽之。
Thread.currentThread().getStackTrace()[2].toString()
參考 Getting the name of the current executing method
Thread.currentThread().getStackTrace()[2].toString()
參考 Getting the name of the current executing method
2014年2月19日 星期三
2014年2月14日 星期五
AndEngine Scene.detachChild(IEntity) exception : java.lang.IndexOutOfBoundsException 解決方法
事情是這樣的,用 AndEngine 開發遊戲的時候
想要移動一個 A 物件至 camera 外,並在移出後從 scene 刪掉
於是乎用了一個 MoveModifier 移動 A 物件的位置
並給了 Modifier 一個 IEntityModifierListener 並 override 了 onModifierFinished 這個方法
在這個方法中呼叫 Scene 的 detachChild() 來移除 A 物件
結果就出現例外了
FATAL EXCEPTION: UpdateThread
java.lang.IndexOutOfBoundsException: Invalid index 142, size is 142
Reference :
Exception while removing sprite from scene ( detachChild )
想要移動一個 A 物件至 camera 外,並在移出後從 scene 刪掉
於是乎用了一個 MoveModifier 移動 A 物件的位置
並給了 Modifier 一個 IEntityModifierListener 並 override 了 onModifierFinished 這個方法
在這個方法中呼叫 Scene 的 detachChild() 來移除 A 物件
結果就出現例外了
FATAL EXCEPTION: UpdateThread
java.lang.IndexOutOfBoundsException: Invalid index 142, size is 142
google 了一下發現這是 thread 的 concurrency 問題
似乎是 Modifier 為另外的 thread 所操控
執行 detachChild() 時,須在 OnUpdate 的 thread 下執行
◎解決辦法
將 detachChild() 丟到以下位置即可
engine.runOnUpdateThread(new Runnable() {
@Override
public void run() {
scene.detachChild(entity);
}
});
Reference :
Exception while removing sprite from scene ( detachChild )
2014年2月12日 星期三
Eclipse Unhandled event loop exception No more handles 解決方法
『如果你有裝 Teamview 的話請直接拉到最下面看方法四』
小明有一天用 eclipse 寫 android 突然出現這樣的錯誤視窗
是一個例外,這個例外的詳細資訊長這樣
把這錯誤示窗關掉繼續 coding,沒幾下又彈出一樣的東西
幾次後發現好像點到 code 編輯器的地方就會出現
於是乎 google 了一下,找了一些解決方法
◎方法一
從中文的開始嘗試了這篇的方法
說是要刪掉 AppData\Local\Eclipse 目錄
不過我是用 Android ADT bundle 好像找不到這個目錄,不過還是列出來供大家參考
◎方法二
一樣是中文的
照著做發現我的 eclipse.ini 裡面已經有 -XX:MaxPermSize 了
另外加上 -XX:PermSize 也沒有用,一樣有例外跑出來
◎方法三
只好開始看英文的解決辦法了,找到了 stackoverflow 的這篇
按照一樓的說法是 Eclipse 預設的 Java 編輯器有 bug
改用 WindowBuilder 可以解決
於是乎從 Eclipse -> Help -> Install New Software 裡安裝 WindowBuilder
在 Work with 那欄填上 WindowBuilder 的網址即可下載安裝
Eclipse 4.2 的網址 http://download.eclipse.org/windowbuilder/WB/release/R201309271200/4.2/
Eclipse 4.3 的網址 http://download.eclipse.org/windowbuilder/WB/release/R201309271200/4.3/
安裝完之後到 Eclupse -> Window -> Preferences 內修改 Java Editor
選擇 *.java 然後在下方加入 WindowBuilder 並設為 Default 讓 WindowBuilder 爬到第一名
結果……問題依然存在
◎方法四
在 stackoverflow 中一個連結一個連結找,找到了 eclipse 的 bug 討論區
裡面什麼樣的可能解決辦法都有
有人說是雙顯示器的關係,有人說是ATI顯卡的關係……@#%^@#$
照著做把螢幕先切回只有一個,無效
更新顯卡驅動,無效
看到有人說把 Teamviewer 關掉,我就關掉,然後就好了 。:.゚ヽ(*´∀`)ノ゚.: 。:.゚ヽ(*´∀`)ノ゚.:。
本著實驗以及信任 Teamviewer 的精神,還是要來測試一下到底是哪裡出問題
直覺上第一個想到的就是會出現在視窗右上角的 "快速連線按鈕"
果然沒錯,把這個功能關掉就完全 OK 了
關掉的方法如下圖
訂閱:
文章 (Atom)