HelloWorld1
HelloWorld1

Reputation: 14108

Data don's display in async's onProgressUpdate

Goal:
Display the text "Test" based on using the async's onProgressUpdate.

Problem:
I don't understand why the code doesn't display the text "Test".

What part am I missing?

Thank you!

Info:
*I'm new in android
*I'm using API 24

MainActivity

package com.jfdimarzio.test1;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity
{

    TextView finalResult;
    TextView txt;
    Button mybutton;


    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        finalResult = (TextView) findViewById(R.id.txtview_display);
        mybutton = (Button) findViewById(R.id.btn_send);

        mybutton.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                AsyncTaskRunner runner = new AsyncTaskRunner();
                runner.execute("test");
            }
        });

    }





        private class AsyncTaskRunner extends AsyncTask<String, String, String>
        {



            @Override
            protected String doInBackground(String... params)
            {
                return params[0];
            }


            @Override
            protected void onPostExecute(String text)
            {
                finalResult.setText("This is not from on ProgressUpdate");
            }

            @Override
            protected void onProgressUpdate(String... text)
            {
                finalResult.setText(text[0]);
            }
        }


    }

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jfdimarzio.test1.MainActivity">

    <Button
        android:id="@+id/btn_send"
        android:layout_width="349dp"
        android:layout_height="54dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="12dp"
        android:text="Send"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="441dp" />



    <TextView
        android:id="@+id/txtview_display"
        android:layout_width="348dp"
        android:layout_height="355dp"
        android:layout_marginTop="15dp"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="16dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

Upvotes: 1

Views: 55

Answers (2)

Kuls
Kuls

Reputation: 2067

Call publishProgress(...) from your doInBackground().

Example :

        @Override
        protected String doInBackground(String... params)
        {
            publishProgress("test");
            return params[0];
        }

Upvotes: 1

Anton Kazakov
Anton Kazakov

Reputation: 2764

Because you should youse publishProgress() to publish middle results. In tour current code return params[0]; will be received in onPostExecute callback.

So put publishProgress(params[0]) into your doInBackground callback.

UPD

@Override
protected String doInBackground(String... params){
publishProgress(params[0]);// this will go into onProgressUpdate
return params[0];//return what you need in onPostExecute
}

Upvotes: 0

Related Questions