Intereting Posts
Как я могу обнаружить и выжить, будучи «Slashdotted»? Выполнить soundmanager2 после ответа ajax Как хранить BIGINT в MySQL с помощью PDO? Возможно ли с помощью javascript найти последнее измененное время файла? как рандомизировать поиск вопроса из базы данных? Вычислить наивысшие повторяющиеся целые числа из двух ассоциативных массивов Загрузка файла повреждена Как проверить, существует ли уже существующее значение, чтобы избежать дублирования? как я могу показать php-страницу только один раз для каждого пользователя Как реализовать перенаправление 303? PHP preg_match неизвестный модификатор Почему некоторые операции с потоковыми массивами в PHP, похоже, не работают? Получение содержимого div (включая дочерние теги) с помощью DOM mysqli_stmt :: bind_result (): Число переменных привязки не соответствует количеству полей в подготовленном сообщении ftp_put для загрузки файлов на сервер

как установить результат BackgroundWorker в TextView

Я очень новичок в Android и не могу получить результат из базы данных в TextView на экране. В настоящий момент мое приложение возвращает сообщение после нажатия кнопки. У меня есть два элемента TextView на экране txtViewBegin и txtViewEind . Из mySql (через php ) я получаю строку вроде этого 22-02-2014 24-05-2017 , которую я разделил на массив Strings (.split(" ")) .

Можно ли использовать setTextView у рабочего стола (onPostExecute?)

или я должен делать это в своей MainActivity ? Тем не менее, в этом нет ничего. Сожалею.

Вот мой BackgroundWorker :

 public class BackgroundWorker extends AsyncTask<String,Void,String> { Context context; AlertDialog alertDialog; BackgroundWorker(Context ctx){ context = ctx; } @Override protected String doInBackground(String... params) { String type = params[0]; String login_url= "http://*************/****.php"; if(type.equals("Draai")){ try { URL url = new URL(login_url); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod("POST"); httpURLConnection.setDoOutput(false); httpURLConnection.setDoInput(true); //OutputStream outputStream = httpURLConnection.getOutputStream(); //BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8")); //String post_data = URLEncoder.encode("user_name""UTF-8")// HIER KUN JE VARIABELEN INGEVEN DIE WORDEN GEIMPLEMENTEERD IN HET PHP DOCUMENT //bufferedWriter.write(); //bufferedWriter.flush(); // bufferedWriter.close(); //outputStream.close(); InputStream inputStream = httpURLConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1")); String result =""; String line=""; while ((line=bufferedReader.readLine()) != null){ result += line; } String[] separated = result.split(" "); bufferedReader.close(); inputStream.close(); httpURLConnection.disconnect(); return result; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } } return null; } @Override protected void onPreExecute() { alertDialog = new AlertDialog.Builder(context).create(); alertDialog.setTitle("TijdsDuur"); } @Override protected void onPostExecute(String result) { alertDialog.setMessage(result); alertDialog.show(); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } } 

и моя MainActivity :

 public class MainActivity extends AppCompatActivity { TextView ViewBegin, ViewEind; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewBegin = (TextView) findViewById(R.id.txtViewBegin); ViewEind = (TextView) findViewById(R.id.txtViewEind); } public void onDraai(View view){ String type = "Draai"; BackgroundWorker backgroundWorker = new BackgroundWorker(this); backgroundWorker.execute(type); } } 

1.) создать interface для обратного вызова в BackgroundWorker

 public interface DataCallBack{ void onDataReceived(String s); } 

2.) Внедрите этот интерфейс обратного вызова в свою Activity

 public class MainActivity extends AppCompatActivity implements BackgroundWorker.DataCallBack { 

3.) Когда задача выполнена, сообщите о своей деятельности с данными для отображения

Ваша MainActivity будет выглядеть так:

 public class MainActivity extends AppCompatActivity implements BackgroundWorker.DataCallBack { TextView ViewBegin, ViewEind; // .....code @Override void onDataReceived(String s){ if(s!=null){ String[] separated = result.split(" "); ViewBegin.setText(separated[0]); ViewEind.setText(separated[1]); } } // .....code } 

Класс BackgroundWorker будет выглядеть так:

 public class BackgroundWorker extends AsyncTask<String,Void,String> { Context context; AlertDialog alertDialog; DataCallBack callback; BackgroundWorker(Context ctx){ context = ctx; // initialize the callback reference callback = (DataCallBack) cxt; } public interface DataCallBack{ void onDataReceived(String s); } // .....code @Override protected void onPostExecute(String result) { callback.onDataReceived(result); // ^^^ send data to Activity alertDialog.setMessage(result); alertDialog.show(); } // .....code }