diff --git a/runner/src/main/java/com/kongzue/runner/Runner.java b/runner/src/main/java/com/kongzue/runner/Runner.java index 7d144b2..df85639 100644 --- a/runner/src/main/java/com/kongzue/runner/Runner.java +++ b/runner/src/main/java/com/kongzue/runner/Runner.java @@ -9,6 +9,8 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; import android.util.Log; import android.view.View; import android.widget.BaseAdapter; @@ -535,7 +537,7 @@ public static void changeData(String key, Object data) { try { field.setAccessible(true); View view = (View) field.get(activity); - setValue(view, data); + preSetValue(view, data); } catch (Exception e) { e.printStackTrace(); } @@ -550,7 +552,7 @@ public static void changeData(String key, Object data) { try { field.setAccessible(true); View view = (View) field.get(activity); - setValue(view, data); + preSetValue(view, data); } catch (Exception e) { e.printStackTrace(); } @@ -569,16 +571,29 @@ public static void changeDataByTag(String key, Object data) { for (Activity activity : activityList) { View view = activity.getWindow().getDecorView().findViewWithTag(key); if (view != null) { - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - setValue(view, data); - } - }); + preSetValue(view, data); } } } + private static void preSetValue(View view, Object data) { + if (view.getContext() instanceof Activity){ + ((Activity)view.getContext()).runOnUiThread(new Runnable() { + @Override + public void run() { + setValue(view, data); + } + }); + }else{ + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + setValue(view, data); + } + }); + } + } + private static void setValue(View view, Object data) { if (view != null) { if (customDataSetter == null || !customDataSetter.setData(view, data)) {