증상 안드로이드에서 웹뷰를 호출했더니.... All WebView methods must be called on the same thread. .... 네.. 흔한 크로스 쓰래드 에러입니다. 해결 방법 닷넷(.NET)으로 치자면 인보크 해서 처리하는 것과 같이 안드로이드 webview에는 '.post()'가 있습니다. 여기에 'Runnable'을 구현하여 전달하면 됩니다. webviewName.post(new Runnable() { @Override public void run() { //동작 } }); 마무리 이런 오류는 생각보다 자주 만나게 됩니다. 문제는 크로스 스레드는 돌리기 전에는 인지 못 하는 경우가 많아서 말이죠 ㅋㅋㅋㅋㅋㅋ
제가 닷넷이 전문이다보니 리눅스에서도 모노(Mono)위주로 작업을 합니다. (참고 : 다른 운영체제에서도 닷넷 프로그램이 돌아간다고? - 모노 프로젝트 ) 그런데..... 모노도 문제가 몇 가지 있는데 콘솔프로젝트의 경우 크게 문제가 없지만 윈폼 프로젝트의 경우 모노에서 해당 컨트롤을 지원하거나 확인하면서 작업해야 합니다. 만약 지원되지 않는다면 닷넷 프레임웍과 모노 모두 호환되는 컨트롤을 찾아서 바꾸거나 만들어야 하죠. 이럴 때 사용할 수 있는 방법의 하나가 와인입니다. 와인에 .net 프레임웍이 설치가 됩니다. 물론 그렇다고 해서 모든 컨트롤이 호환되는 건 아니고 어떤 게 호환되는지 확인해봐야 합니다. ㅎㅎㅎ 0. 기존 와인 지우기 필요하다면 기존 와인을 지우고 새로 설치하는 것도 좋은 방법입니다. ..