1

このチュートリアルに従って、jni 呼び出しを介して Android で URL を起動しました。正常に実行されます。
同様に、cocos2dx レイヤーからトースト メッセージを次のように表示したいと考えています。

public static void openURL(String url) {
  Toast.makeText(me,url,Toast.LENGTH_LONG).show();
}

しかし、エラーでクラッシュします: Can't create handler with thread. 正しく表示する方法を教えてください。

4

3 に答える 3

0

バックグラウンド スレッドで UI スタッフを実行することはできません。AsyncTask を使用し、そのコードを on pre/post execute に配置するか、トーストを表示するだけの場合は UI スレッドで実行する必要があります

runOnUiThread(new Runnable() {
}
于 2012-07-23T08:09:57.957 に答える
0

だからこれは2012年からです。

cocos2d-x を使っている人は少ないと思います。cocos2d-x でこれを行う方法は次のとおりです。

AppActivity.java を編集します。

    public class AppActivity extends Cocos2dxActivity
    {
    private Activity activity;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.activity = this;
        showToast();
    }

    public void showToast()
    {
        activity.runOnUiThread(new Runnable()
        {

            @Override
            public void run()
            {
                // TODO Auto-generated method stub
                Toast.makeText(activity, "Hello :D", 10).show();
            }
        });
    }

    }

これは、cocos2d-x バージョン 3.x で非常にうまく機能します。私はそれをテストしました。もちろん、JNI はメソッドを呼び出すだけであり、これは機能する必要があります。

于 2016-01-08T00:29:32.060 に答える