繁体   English   中英

Android-如何在签名模式下从另一个线程更改UI

[英]Android - How to change UI from another thread in signed mode

我需要从另一个线程更改UI,所以我使用了以下代码:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        status_txt.setText("Some msg ...");
    }
});

TextView status_txt = (TextView) findViewById(R.id.status);

在调试模式下,当我使用USB调试在手机上测试应用程序时,一切正常,并且UI正确更改。 但是,当我将应用程序导出并签名为APK文件时,安装后UI不会更改。

怎么了?


更新我的整个代码是:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Environment;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.TextView;


@SuppressLint("DefaultLocale")
public class Httpd extends Activity
{
    TextView textIpaddr;

    private WebServer server;
    /** Called when the activity is first created. */
    @SuppressLint("DefaultLocale")
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        server = new WebServer();
        try {
            server.start();
        } catch(IOException ioe) {
            Log.w("Httpd", "The server could not start.");
        }
        Log.w("Httpd", "Web server initialized.");
    }


    // DON'T FORGET to stop the server
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        if (server != null)
            server.stop();
    }

    public void setTextHistory(String input) {
        textIpaddr.setText(input);
    }

    private class WebServer extends NanoHTTPD {

        public WebServer()
        {
            super(8080);
        }

        @Override
        public Response serve(String uri, Method method, 
                Map<String, String> header,
                Map<String, String> parameters,
                Map<String, String> files) {

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    setTextHistory("Some Text ...");
                }
            });
        }

    }

}

只需更新您的ADT限制,错误就会消失。 http://developer.android.com/sdk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM