1

他の投稿を読みましたが、問題は解決しませんでした。私はAndroidの初心者です。MSSQL に接続する必要がありますが、元のスレッド エラーが発生します。どうすればこれを解決できますか? ありがとう。

これが私のコードです:

private class MyThread implements Runnable {
    public void run() {

        durumKontrol();
        if (isConnected) {

            new Thread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub

                    kuyrukKontrol();
                }

            }).start();

        } else {
            Toast toast = Toast
                    .makeText(
                            getApplicationContext(),
                            "Ağa erişilemiyor. Lütfen kablosuz ağın açık olduğundan emin olunuz",
                            Toast.LENGTH_LONG);
            toast.show();
        }

        tick_Handler.postDelayed(tick_thread, firstDelay);
        firstDelay = 10000;
    }

}private void kuyrukKontrol() {
    // TODO Auto-generated method stub

    // Hücrenin sipariş ettiği ve henüz getirilmemiş malzemelerin listesi
    // çekiliyor
    TextView tvIP = (TextView) findViewById(R.id.tvIP);
    tvIP.setText(HatAdi + "-" + HucreNo);


    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        Connection conn = DriverManager
                .getConnection("jdbc:jtds:sqlserver://x.x.x.x:1433",
                        "xx", "xxxxx");

        Statement query = conn.createStatement();

        // İlk olarak bu forklifte ait teslim edilmeyen bir talep var mı
        ResultSet rs = query
                .executeQuery("select * from MOBILE.dbo.fos_SS where hucreNo = '" + HucreNo + "' and sonDurum != 'T'");
        while (rs.next()) {

            KuyrugaEkle(rs.getString("malzemeNo"),rs.getString("sonDurum"),rs.getString("sonIslemZamani"));

        }

        rs.close();
        conn.close();

    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

KuyrugaEkle関数では、レイアウトを動的に変更し、その関数でエラーが発生しています。

ありがとう。

4

2 に答える 2

1

main 以外のスレッドから UI を変更することは許可されておらず、関数内でそれを行いますkuyrukKontrolHandlerorを使用runOnUiThreadして、メイン スレッドで実行します。

于 2012-04-18T06:58:29.213 に答える
1

MyThread のオブジェクトを作成し、runOnUiThread メソッドで使用します

MyThread mt = new MyThread();

アクティビティのコンテキストを取得し、次のコードを使用します

Activity a=(Activity)context;
            a.runOnUiThread(mt);

Applications コンテキストを MyThread クラスのコンストラクターに渡し、前述のように使用します。

于 2012-04-18T07:28:09.557 に答える