2015-04-13 1 views
0

Мне нужно передать переменную String из функции onActivityResult в другой класс, который расширяет AsyncTask (sendData). Я написал внутри того же .java-файла , Мне нужно передать переменную String под названием js.Как передать переменную String из onActivityResult в другой класс в том же .java-файле

Вот мой код

public class Donate extends Activity{ 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_CODE_PAYMENT) { 
     if (resultCode == Activity.RESULT_OK) { 
      PaymentConfirmation confirm = 
        data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION); 

      if (confirm != null) { 
       Log.i(TAG, confirm.toJSONObject().toString()); 
       Log.i(TAG, confirm.getPayment().toJSONObject().toString()); 
       Log.i(TAG, confirm.getProofOfPayment().toJSONObject().toString()); 
       String js = confirm.getProofOfPayment().toJSONObject().toString(); 

       new sendData().execute(js); 




       Toast.makeText(
         getApplicationContext(), 
         "PaymentConfirmation info received from PayPal", Toast.LENGTH_LONG) 
         .show(); 
       Intent conf = new Intent(getApplicationContext(), PayConfirm.class); 
       startActivity(conf); 
      } 
     } else if (resultCode == Activity.RESULT_CANCELED) { 
      Log.i(TAG, "The user canceled."); 
     } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) { 
      Log.i(TAG,"An invalid Payment or PayPalConfiguration was submitted. Please see the docs."); 
     } 
    } 
} 

public class sendData extends AsyncTask<String, String, Void> { 

    @Override 
    protected Void doInBackground(String... params) { 


     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost("http://10.0.2.2/shareity/paypal.php/"); 

     try { 
      HttpEntity httpEntity = new StringEntity(js); 
      httpPost.setEntity(httpEntity); 
      httpClient.execute(httpPost); 
      //String t = httpPost.toString(); 
      Log.i(TAG, "Testiing"); 
      Log.i(TAG, js); 


     } 
     catch (IOException e) { 
     } 

     return null; 
    } 
} 
+0

Что происходит, когда вы пытаетесь этот код? –

+0

@EricS. в классе 'sendData',' js' подчеркивается и показывает ошибку: 'js' не может быть разрешен переменной –

ответ

1

Это потому, что метод doInBackground принимает произвольное количество строк.

Измените свой doInBackround так:

@Override 
protected Void doInBackground(String... params) { 
    String js = params[0]; // The params is an array of strings :) 
    // Your code here 
} 

Для получения дополнительной информации о произвольном числе параметров см: http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html

+0

безупречный. благодаря –

1

Теперь доступ к нему, как,

HttpEntity httpEntity = new StringEntity(params[0]); 

Как вы сдадите String js к AsyncTask с,

new sendData().execute(js); 

Вы можете получить доступ к этому аргументу в doInBackground(String... params) с аргументом params. Так должно быть params[0].

+0

, вы имеете в виду замену' HttpEntity httpEntity = new StringEntity (js); 'с' HttpEntity httpEntity = new StringEntity (params [0]); '? Я попробовал, но он все равно не работает. –

+0

Да, просто замените эту строку кода. в 'donInbackground()' 'params [0]' должна быть ваша строка 'js'. – user370305

Смежные вопросы