Не возвращается значение из потока

157
25 декабря 2019, 14:20

Есть поток которое получает с сайта имя пользователя:

    public class ThreadNews extends AsyncTask<String,Void,String> {
    @Override
    protected String doInBackground(String... strings) {
        try {
            URL url = new URL (strings[0]);
            HttpURLConnection connection=(HttpURLConnection) url.openConnection();
            connection.setRequestProperty("Content-Type", "application/json");
            InputStream inputStream=connection.getInputStream();
            InputStreamReader isr =new InputStreamReader(inputStream);
            BufferedReader bRead=new BufferedReader(isr);
            StringBuilder sBuilder=new StringBuilder();
            String line;
            while ((line=bRead.readLine())!=null){
                sBuilder.append(line);
            }
            isr.close();
            inputStream.close();
            return sBuilder.toString();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
}

Во время выполнения строки return sBuilder.toString(); значение sBuilder="Admin", но когда я получаю это значение из потока:

LayoutInflater li = LayoutInflater.from(this);
    View promptsView = li.inflate(R.layout.alert_dialog_layout, null);
    AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(this);
    mDialogBuilder.setView(promptsView);
    final EditText userInputLogin = (EditText) promptsView.findViewById(R.id.itLogin);
    final EditText userInputPass = (EditText) promptsView.findViewById(R.id.itPass);
    mDialogBuilder.setCancelable(false)
            .setPositiveButton("Вход", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    Toast.makeText(MainActivity.this,"asdsa",Toast.LENGTH_SHORT).show();
                    try {
                        Res= new ThreadNews().execute("http://newsyou.000webhostapp.com/authorization.php?L="+userInputLogin.getText().toString()+"&P="+userInputPass.getText().toString()).get();
                        if((Res.equals(""))&&(Res!=null)){
                            Toast.makeText(MainActivity.this,"Неверный логин или пароль", Toast.LENGTH_SHORT).show();
                        }else{
                            User.setName(Res);
                            User.setID(Integer.parseInt(new ThreadNews().execute("http://newsyou.000webhostapp.com/GetUserId.php?Name="+User.getName()).get()));
                            dialog.cancel();
                            LoadNews();
                        }
                    } catch (ExecutionException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            })
            .setNegativeButton("Закрыть", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    dialog.cancel();
                }
            })
            .setNeutralButton("Регистрация", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                }
            });
    AlertDialog alertDialog = mDialogBuilder.create();
    alertDialog.show();

возникает ошибка on a null object reference на строке User.setName(Res).

Answer 1

Нужно было создать экземпляр, а не только объявить:

User=new UserClass("Visitor",-1);
READ ALSO
Изменить стили css стороннего виджета iframe

Изменить стили css стороннего виджета iframe

Есть сторонний виджет, который представляет собой просто форму обратной связи iframe, вопрос: возможно ли изменить в нем какие-то стили на моем...

163
Как записать информацию в файл Node.js?

Как записать информацию в файл Node.js?

У меня есть папка с папками, в каждой из них лежит несколько markdown файлов:

130
typescript: application is not a constructor

typescript: application is not a constructor

Когда пытаюсь создать экземпляр класса, вылетает ошибка

140
2 фильтра на массив в 1 функции VUE JS

2 фильтра на массив в 1 функции VUE JS

Хотела на массив повесить 2 фильтраЛогика такая: 1 - фильтр для поиска

127