2016-04-15 88 views
0

looper.prepare叫这里是我的代码。而我得到的错误AndroidJavaException不能内螺纹已经没有activity.Call叫looper.prepare在Unity创建处理器(runOnUiThread)AndroidJavaException不能创建内螺纹处理,至今尚未统一

public static void showToast(string text) 
     { 
      if (Application.platform == RuntimePlatform.Android) 
      { 
       AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
       AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); 
       AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast"); 
       AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", text); 
       AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext"); 
       AndroidJavaObject toast = Toast.CallStatic<AndroidJavaObject>("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_SHORT")); 
       activity.Call("runOnUiThread", new AndroidJavaRunnable(()=> { toast.Call("show"); })); 
      } 
     } 

如果有解决方案请help.What我做wrong.Thanks提前

+0

您有任何解决方案来解决这个error.if已解决请help.What我提前 –

回答

2

问题是,统一播放线程中没有一个活套运行,这意味着任何事情需要处理/尺蠖必须在UI线程中运行,你的情况

  activity.Call("runOnUiThread", new AndroidJavaRunnable(()=> 
     { 
      AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast"); 
      AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", text); 
      AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext"); 
      AndroidJavaObject toast = Toast.CallStatic<AndroidJavaObject>("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_SHORT")); 
      toast.Call("show"); } 
     )); 

或者也许只是makeText部分

+0

我能获得更多的信息做wrong.Thanks?我无法找到一个团结球员的线索,并没有一个活套。 –

0

UnityPlayer只创建一个用于整个应用程序的活动。并且它在没有活套的背景线程上运行。 因此,任何需要处理程序/循环的东西都必须在UI线程上运行。

public static void showToast(string text) 
{ 
    if (Application.platform == RuntimePlatform.Android) 
    { 
     AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
     AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); 
     AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast"); 
     AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", text); 
     AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext"); 
     activity.Call("runOnUiThread", new AndroidJavaRunnable(()=> { 
      AndroidJavaObject toast = Toast.CallStatic<AndroidJavaObject>("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_SHORT")); 
      toast.Call("show"); })); 
       } 
      } 
相关问题