2015-07-07 4 views
0

Я пытаюсь принять BrainTree в своем приложении. Я не понимаю часть клиента Async HTTP.Конфигурирование Braintree

Где разместить это в своем приложении? В настоящее время у меня это в MainActivity, и он дает мне ошибки для 'get', 'TextHttpResponseHandler', а также 'clientToken'.

Любые идеи?

package com.example.android.payments; 

import android.content.Intent; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import com.loopj.android.http.*; 
import com.braintreepayments.api.dropin.BraintreePaymentActivity; 


public class MainActivity extends ActionBarActivity { 

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

    } 
    AsyncHttpClient client = new AsyncHttpClient(); 
    client.get("https://your-server/client_token", new TextHttpResponseHandler() { 
     @Override 
     public void onSuccess(String clientToken) { 
      this.clientToken = clientToken; 
     } 
    }); 
    public void onBraintreeSubmit(View v) { 
     Intent intent = new Intent(context, BraintreePaymentActivity.class); 
     intent.putExtra(BraintreePaymentActivity.EXTRA_CLIENT_TOKEN, clientToken); 
     // REQUEST_CODE is arbitrary and is only used within this activity. 
     startActivityForResult(intent, REQUEST_CODE); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
+0

Каковы точные ошибки, которые вы дарите? И я предполагаю, что у вас на самом деле есть что-то лучше, чем «ваш-сервер» в URL-адресе ...? :) –

+0

Не удается разрешить символ для get и clientToken, а затем вернуть оператор, необходимый для TextHttpResponseHandler. И да, да. – Alex

+0

['AsyncHttpClient'] (https://github.com/AsyncHttpClient/async-http-client) - это сторонняя библиотека, вам нужно будет добавить ее в качестве зависимости вашего приложения, прежде чем сможете его использовать. – Luke

ответ

0

Ваш призыв к client.get() не в теле метода, так что ваш код не является синтаксически правильным. Попробуйте поместить его в метод (или блок конструктора или инициализатора, но это плохая идея для работы в любом из этих мест).

Например, вы могли бы поставить это утверждение в новом методе, называемом fetchClientToken():

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { ... } 

    AsyncHttpClient client = new AsyncHttpClient(); 

    public void fetchClientToken() { 
     client.get("https://your-server/client_token", new TextHttpResponseHandler() { 
      @Override 
      public void onSuccess(String clientToken) { 
       this.clientToken = clientToken; 
      } 
     }); 
    } 

    public void onBraintreeSubmit(View v) { ... } 
    @Override public boolean onCreateOptionsMenu(Menu menu) { ... } 
    @Override public boolean onOptionsItemSelected(MenuItem item) { ... } 
} 

Затем нужно вызвать fetchClientToken как-то, так же, как вы бы с любым другим способом.

+0

Не понимаю. Извините, я новичок в Android. Не могли бы вы привести пример? – Alex

+0

@Alex добавленный код. –