Это трассировка стека упомянутого исключения
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6149)
at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:843)
at android.view.View.requestLayout(View.java:16474)
at android.view.View.requestLayout(View.java:16474)
at android.view.View.requestLayout(View.java:16474)
at android.view.View.requestLayout(View.java:16474)
at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:352)
at android.view.View.requestLayout(View.java:16474)
at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:352)
at android.view.View.setFlags(View.java:8938)
at android.view.View.setVisibility(View.java:6066)
Итак, если вы идете и копаете, вы узнаете
void checkThread() {
if (mThread != Thread.currentThread()) {
throw new CalledFromWrongThreadException(
"Only the original thread that created a view hierarchy can touch its views.");
}
}
Где mThread инициализируется в конструкторе, как показано ниже
mThread = Thread.currentThread();
Все, что я хочу сказать, когда мы создали конкретное представление, мы создали его в потоке пользовательского интерфейса, а затем попытаемся изменить его в Worker Thread.
Мы можем проверить его ниже фрагмент кода
Thread.currentThread().getName()
, когда мы раздуваем макет и позже, когда вы получаете исключение.
$(document).ready(function(){
$(document.body).on('click', ".OpenPopup", function(e){
alert('test .OpenPopup');
// do something
return false;
});
$(document.body).on('click', ".EditIcon", function(){
alert('test .EditIcon');
// do something
$("#ABC").html('<div class="EditIcon OpenPopup" pwidth="800" pheight="500" ptitle="Edit Text">click here again</div>');
});
});
После @Dhofca это действительно сработало. Я просто показываю пример, который я пробовал с ключевым словом this.
$(document.body).on('click', ".query-result table tr", function () {
var el = $(this);
el.closest('table').find('tr').removeClass('dotted');
el.addClass('dotted');
});
.on()
может использоваться с или без делегирования , ниже приведен пример функции on () с использованием делегирования.
$("#ABC").on('click', ".OpenPopup", function(e){