Reputation: 14108
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
Reputation: 2067
Call publishProgress(...)
from your doInBackground()
.
Example :
@Override
protected String doInBackground(String... params)
{
publishProgress("test");
return params[0];
}
Upvotes: 1
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