尝试添加 TextView 的 RunOnUiThread 崩溃

斯特凡诺·贝尔蒂

我有一个名为 Player 的类,它在图像中创建 TextView

    public Player(String username, boolean isWhite, Context context){
    this.username = username;
    this.isWhite = isWhite;
    this.context = context;
    label = new TextView(context);
    if(isWhite)
        label.setCompoundDrawablesWithIntrinsicBounds(R.drawable.white, 0, 0, 0);
    else
        label.setCompoundDrawablesWithIntrinsicBounds(R.drawable.black, 0, 0, 0);

   label.setText(username);
}

一个监听器从服务器读取消息

public void run(){
    try {
        String[] messages;//ci salvo i messaggi che arrivano
        //PARTITA
        for (messages = ConnectionStream.getIn().readLine().split(":");
             !messages[0].equals("ENDGAME"); messages = ConnectionStream.getIn().readLine().split(":")) {
            switch (messages[0]) {//scelgo cosa fare a seconda del messaggio
                case "ADD"://ADD:NOMEGIOCATORE:NODODIPARTENZA:WHITE/BLACK
                    game.login(messages[1], messages[3].equals("white"));
                    game.movePlayer(game.getPlayer(messages[1]), messages[2]);
                    break;
                case "MOVE"://MOVE:GIOCATORE:NODO
                    game.movePlayer(game.getPlayer(messages[1]), messages[2]);
                    break;
                case "REMOVE"://REMOVE:GIOCATORE
                    game.logout(game.getPlayer(messages[1]));
                    break;
                case "DUEL"://DUEL:GIOCATORENEMICO
                    /*vertexListener.setDueling(true);//finchè duello non posso spostarmi
                    duel = new DuelFrame(frame, messages[1], connectionStream.getOut());
                    SwingUtilities.invokeAndWait(duel);*/
                    break;
                case "ENDDUEL":
                    /*if(duel!=null)
                        duel.removeDuel();
                    duel = null;
                    vertexListener.setDueling(false);//ora posso spostarmi
                    break;*/
                case "SETBULLETS"://SETBULLETS:INT
                    game.setBullets(Integer.parseInt(messages[1]));
                    break;
                case "ADDBULLETS"://ADDBULLETS:INT
                    game.addBullets(Integer.parseInt(messages[1]));
                    break;
                default:
                    throw new Exception("Server sent weird command: " + messages[0]);
            }
        }
    }catch(Exception e){
        e.printStackTrace();
        game.showError(e.toString());
    }
}

当我收到消息 MOVE:PLAYER:NODE 时,函数 move(Player player, String node) 被调用

    public void movePlayer(final Player player, String node){
        final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(PLAYER_WIDTH, PLAYER_HEIGHT);
        Point point = nodes.get(node);
        params.leftMargin = point.x;
        params.topMargin = point.y+NODE_HEIGHT;
        final RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout);
        runOnUiThread(new Runnable(){
            @Override
            public void run(){
                layout.addView(player.getLabel(), params);
            }
        });
    }

我的问题是 runOnUiThread 崩溃了,我什至不知道为什么。我试图用 try-catch 包围它并且不使用 runOnUiThread (这给了我异常“只有视图的所有者可以触摸它”)。有没有办法在这个多线程应用程序中找到错误?

斯特凡诺·贝尔蒂

我发现我试图添加一个已经显示的视图,这导致了问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android runOnUiThread()不更新TextView

来自分类Dev

Android runOnUiThread()不更新TextView

来自分类Dev

TextView崩溃?

来自分类Dev

尝试捕获runOnUiThread

来自分类Dev

按返回按钮时,Android runOnUiThread崩溃

来自分类Dev

在asyntask中调用时,runOnUiThread崩溃

来自分类Dev

runOnUiThread防止选取框的TextView吗?

来自分类Dev

无法在runonuithread中将值设置为textview

来自分类Dev

在 textView 中添加表情符号,然后崩溃 Swift

来自分类Dev

TextView导致应用崩溃

来自分类Dev

修改TextView崩溃程序

来自分类Dev

尝试添加arraylist的值时应用崩溃

来自分类Dev

尝试通过单击按钮更改textView中的文本大小时,应用崩溃

来自分类Dev

当我尝试更改 SnackBar TextView 应用程序崩溃的颜色时

来自分类Dev

TextView.getText()。toString()崩溃

来自分类Dev

Android TextView.setText崩溃

来自分类Dev

ViewPager片段中的TextView随机使应用程序崩溃NullPointerException:尝试调用虚拟方法void View.sendAccessibilityEventUnchec

来自分类Dev

当我尝试使用按钮添加QTabWidget时崩溃

来自分类Dev

尝试添加行时,应用程序不断崩溃吗?

来自分类Dev

TextView onclick方法使应用程序崩溃

来自分类Dev

TextView TextAllCaps崩溃的应用程序

来自分类Dev

循环写入TextView时Android程序崩溃

来自分类Dev

TextView导致应用程序崩溃

来自分类Dev

应用程序在 textview.becomeFirstResponder 崩溃

来自分类Dev

更新 TextView 会导致即时崩溃

来自分类Dev

尝试/捕获崩溃255

来自分类Dev

尝试移位时崩溃

来自分类Dev

尝试移位时崩溃

来自分类Dev

添加Gridview使其崩溃