0

I have a method name Request() in the onCreate method of the activity.

private void Request() { new PostDataAsyncTask(textEmail, tValue).execute(); } 

Iam passing two strings in it and the async class is as follows:

public class PostDataAsyncTask extends AsyncTask<String, String, String> { GameActivity game= new GameActivity(); private String data,data1; public PostDataAsyncTask(String textEmail, String hello) { data = textEmail; data1= hello; } long date = System.currentTimeMillis(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM MM dd, yyyy h:mm a"); String dateString = simpleDateFormat.format(Long.valueOf(date)); protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(String... strings) { try { postText(); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String lenghtOfFile) { } private void postText(){ try{ String postReceiverUrl = "http://techcube.pk/game/game.php"; HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(postReceiverUrl); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("email", data)); nameValuePairs.add(new BasicNameValuePair("score", data1)); nameValuePairs.add(new BasicNameValuePair("datetime", dateString)); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpClient.execute(httpPost); HttpEntity resEntity = response.getEntity(); if (resEntity != null) { String responseStr = EntityUtils.toString(resEntity).trim(); Log.v("SuccesS", "Response: " + responseStr); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 

Now what i want is that i want to get the value of responseStr in my MainActivity that is generated when posttext method called. How to show this responseStr value in the MainActivity? Remember there is a new class that i made named as PostDataAsyncTask so how to access responseStr from this class and show it in my mainActivity as a Toast or Textview? Please Help

2 Answers 2

2

You can create an interface that you pass into the method in question. For example

public interface INetworkResponse { void onResponse(String response); void onError(Exception e); } 

You would then need to create a concrete implementation of the interface. perhaps as a child class inside the activity that calls the AsyncTask.

public class MyActivity extends Activity { private void Request() { NetworkResponse response = new NetworkResponse(); new PostDataAsyncTask(textEmail, tValue, response).execute(); } public class NetworkResponse implements INetworkResponse { public void onResponse(String response) { // here is where you would process the response. } public void onError(Exception e) { } } } 

Then change the async task constructor to include the new interface.

public class PostDataAsyncTask extends AsyncTask<String, String, String> { GameActivity game= new GameActivity(); private String data,data1; private INetworkResponse myResponse; public PostDataAsyncTask(String textEmail, String hello, INetworkResponse response) { data = textEmail; data1 = hello; myResponse = response } private void postText() { // do some work myResponse.onResponse(myResultString); } } 
Sign up to request clarification or add additional context in comments.

2 Comments

I tried this sir but it gives me an exception saying NullPointerException
Have another look. I've rewritten my answer to be more specific to what your trying.
0

You can create a Handler as an Inner class inside your Activity to send data between your thread and UIthread:

public class YourHandler extends Handler { public YourHandler() { super(); } public synchronized void handleMessage(Message msg) { String data = (String)msg.obj; //Manage the data } } 

Pass this object in the header of PostDataAsyncTask

public PostDataAsyncTask(String textEmail, String hello, YourHandler mYourHandler) { data = textEmail; data1= hello; this.mYourHandler = mYourHandler; } 

and send the data in postText() to the Activity:

if (resEntity != null) { String responseStr = EntityUtils.toString(resEntity).trim(); msg = Message.obtain(); msg.obj = responseStr; mYourHandler.sendMessage(msg); Log.v("SuccesS", "Response: " + responseStr); } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.