10

Android 3.0以降、メインスレッドでネットワーク操作ができないことは承知しています。だから、私は new 内で呼び出しを行いましたThread:

button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        user=login.getText().toString();
        password=pass.getText().toString();
        params.add(new BasicNameValuePair("user", user));
        params.add(new BasicNameValuePair("pass", password));
        Thread thread=new Thread(){
            public void run(){
                try {
                    // Throws exception here
                    response=CustomHttpClient.executeHttpPost(urlogin, params); 
                    response=response.replaceAll("\\s+","");

                } catch (Exception e) {
                    e.printStackTrace();
                }
                if(response.equals("ok")){

                    Intent home=new Intent(c, HomeActivity.class);
                    home.putExtra("username", user);
                    startActivity(home);
                    Toast toast=Toast.makeText(
                        c, getString(R.string.welcome), Toast.LENGTH_LONG);
                    toast.show();
                }else{
                    if(response.equals("fallo")){
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                Toast toast=Toast.makeText(
                                    c, R.string.nologin, Toast.LENGTH_LONG);
                                toast.show();
                                login.setText("");
                                pass.setText("");
                            }
                        });
                    }else if(response.equals("nologin")){
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                Toast toast=Toast.makeText(
                                    c, R.string.nouser, Toast.LENGTH_LONG);
                                toast.show();
                                login.setText("");
                                pass.setText("");

                            }
                        });
                    }
                }
            }
        };
        thread.run();
    }
});

しかし、私はメインスレッドにいないにもかかわらず、その例外を受け取ります(または少なくとも私はそう思います...)

4

3 に答える 3