1

我阅读了其他帖子,但没有解决我的问题。我是安卓新手。我必须连接到 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,您可以在 function 中执行此操作kuyrukKontrol。使用HandlerrunOnUiThread在主线程上执行它。

于 2012-04-18T06:58:29.213 回答
1

创建 MyThread 的对象并在 runOnUiThread 方法中使用它

MyThread mt = new MyThread();

获取 Activity 的上下文并使用以下代码

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

将 Applications 上下文传递给 MyThread 类的构造函数并按照我上面提到的那样使用它。

于 2012-04-18T07:28:09.557 回答