0

SQLサーバーからのログインIDとパスワードを使用するログインアプリを作成しました。正しいログインID、パスワードで適切に機能し、空のログインフィールドでもトーストを表示します

しかし、間違ったフィールドを入力した場合。目的のトーストが表示されていません。おそらく、トーストを間違った場所で使用しています。私のコードは

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

最善の方法は、メイン アクティビティ (UI スレッド) にハンドラーを記述することです。ハンドラーでトーストを表示します。スレッドからそのハンドラーにメッセージを投稿します。

于 2013-08-08T07:00:20.803 に答える
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

そのようにしてみてください:

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 に答える