0

我创建了一个登录应用程序,该应用程序从 sql server 登录 id 和密码它可以正常工作以获取正确的登录 id、密码,并且还为空登录字段提供 toast

但是,如果我输入了错误的字段。它没有显示想要的吐司。也许我在错误的地方使用吐司。我的代码是

public void onClick(View v) {

            // TODO Auto-generated method stub
            ResultSet rs=null;
            String id=uid.getText().toString();
            String upass=pass.getText().toString();
            final String uid1=null;
            final ProgressDialog pd=new ProgressDialog(MainActivity.this);
            pd.setTitle("Processing");
            pd.setMessage("Processing is going on..plz be patient...");         
            pd.show();
            if(id.equals("")&&upass.equals("")){

                Toast.makeText(getApplicationContext(), "empty id or password", Toast.LENGTH_SHORT).show();
            }


            new Thread(){
                public void run(){
                    //defining task for progress dialog for busy.
                    try{
                        ResultSet rs=null;
                        String id=uid.getText().toString();
                        String upass=pass.getText().toString();
                        String uid1=null;


                        if(!id.isEmpty()&&!upass.isEmpty())
                            try{
                            initilize();
                            Statement statement=connect.createStatement();
                            rs=statement.executeQuery("LOGIN '"+id+"', '"+upass+"'");
                            List<String>data=new ArrayList<String>();
                            if(rs.next()){

                                uid1=rs.getString("PA_NAME");
                                pd.dismiss();
                                Intent i=new Intent(getApplicationContext(),SecondActivity.class);
                                i.putExtra("a", uid1);
                                startActivity(i);
                            }






                            }catch(Exception e){
                                e.printStackTrace();
                            }

                        else
                            Toast.makeText(MainActivity.this, "invalid id or password", Toast.LENGTH_LONG).show();pd.dismiss();





                    }catch(Exception e){                        
                    }
                    pd.dismiss();
                }}.start();

如果有人建议我在哪里放置错误的登录 ID。在条件语句中。这很紧急。

4

5 回答 5

1

您只能在主线程上创建 UI 对象。这包括敬酒。对你来说最简单的方法是用来Activity#runOnUiThread展示你的吐司。您还应该检查Handler课程。

于 2013-08-08T06:54:38.110 回答
0

使用runOnUiThread方法:

new Thread() {
    public void run() {
        activity.runOnUiThread(new Runnable() {
            public void run() {
                Toast.makeText(MainActivity.this, "invalid id or password", Toast.LENGTH_LONG).show();
            }
        });
    }
}.start();

使用Handler

final Handler mHandler = new Handler();
final Runnable mUpdateResults = new Runnable() {
    public void run() {
        Toast.makeText(MainActivity.this, "invalid id or password", Toast.LENGTH_LONG).show();
    }

new Thread() {
    public void run() {
        mHandler.post(mUpdateResults);
    }
}.start();
于 2013-08-08T06:54:49.667 回答
0

你应该总是在 UIthread 中显示吐司。修改代码如下图:

runOnUiThread(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(MainActivity.this, "invalid id or password", Toast.LENGTH_LONG).show();
                pd.dismiss();

            }
        });
于 2013-08-08T06:56:08.667 回答
0

Try doing it like that:

MainActivity.runOnUiThread(new Runnable() {
    public void run() {
        Toast.makeText(MainActivity, "Toast on the main Activity", Toast.LENGTH_SHORT).show();
    }
});
于 2013-08-08T06:58:15.007 回答
0

最好的方法是在您的主要活动(UI 线程)中编写一个处理程序。在处理程序中显示吐司。从线程向该处理程序发布消息。

于 2013-08-08T07:00:20.803 回答