У меня есть приложение, работающее несколько недель с использованием ACRA, и у меня не было ни одной ошибки, пока сегодня не сообщили об одной странной ошибке.
У меня есть:
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
исходящий из этого метода в трассировке стека (восстановленный):
at my.app.CountdownFragment$1.void onPostExecute(java.lang.Object)(SourceFile:1)
И это соответствующий исходный фрагмент:
private void addInstructionsIfNeeded() {
if (S.sDisplayAssist) {
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... params) {
return null;
}
/*
* runs on the ui thread
*/
protected void onPostExecute(String result) {
Activity a = getActivity();
if (S.sHelpEnabled && a != null) {
in = new InstructionsView(a.getApplicationContext());
RelativeLayout mv = (RelativeLayout) a
.findViewById(R.id.main_place);
mv.addView(in.prepareView());
}
};
}.execute("");
}
}
Где addInstructionsIfNeeded()
вызывается из сообщения, отправленного обработчиком (Пользовательский интерфейс заголовок ).
onPostExecute()
работает в потоке пользовательского интерфейса, так почему же у меня "неправильный поток"?Мой вопрос: :Как это может быть?
РЕДАКТИРОВАТЬ: Это все происходит во фрагменте