Android переключить активность с не-пользовательского потока - PullRequest
4 голосов
/ 06 февраля 2012

Я работаю над проектом Android Unity3D, где я хочу опубликовать некоторые вещи на Facebook.В основном приложение выполняет действия, которые находятся вне моего контроля.Единый вход на Facebook требует от меня активности, чтобы показать свои вещи.Теперь проблема в том, что триггер для публикации на Facebook выходит из активности Unity (из нативного кода через JNI).это в основном мой простой Java-объект в качестве коннектора, который создается из единства в нативном коде, и я могу назвать его методами.У меня также есть доступная ссылка на currentActivity.По-прежнему возникают проблемы с этим.

Я всегда получаю

AndroidRuntime(12845): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

Я пытался дать ссылку на текущую активность на Facebook authorize () как операцию, к которой нужно привязаться, но выдает ошибку.Я пытался переключиться на свою собственную деятельность, где я хотел запустить Facebook на нем.получил ту же ошибку.попробовал это

Intent intent = new Intent(UnityPlayer.currentActivity.getApplicationContext(), MyActivity.class);
UnityPlayer.currentActivity.startActivity(intent);

также несколько других подобных вещей, но просто не могу переключить активность.Как мне это сделать?

спасибо

1 Ответ

7 голосов
/ 06 февраля 2012

Это потому, что операция пользовательского интерфейса не может выполняться в рабочем потоке. Вы должны попробовать runOnUiThread.

UnityPlayer.currentActivity.runOnUiThread(new Runnable() {
public void run() {
  Intent intent = new Intent(UnityPlayer.currentActivity.getApplicationContext(),MyActivity.class);


UnityPlayer.currentActivity.startActivity(intent);
 }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...