Ir para conteúdo
Heltinhu

Ajuda Com ElegantNumber android

Recommended Posts

Oi galera alguém manja pra me ajudar a implementar um ElegantNumber, assim....

 

Tenho uma activity onde irei consultar o carrinho pegando os dados internamente no SQLite e me listando em um RecyclerView até aí tudo certo ta funfando

só que agora implementei uma Library ElegantNumber bem simples e bacana, ela tbm me retorna a quantidade correta, porém quando monto o setOnClickListener

ElegantNumberButton btnQdade = findViewById(R.id.qdadeItem);
btnQdade.setOnClickListener(new ElegantNumberButton.OnClickListener() {
    @Override
    public void onClick(View view) {
        Toast.makeText(getApplicationContext(), "Adicionando + 1 Item", Toast.LENGTH_LONG).show();
    }
});

da o seguinte erro...

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.cepheuen.elegantnumberbutton.view.ElegantNumberButton.setOnClickListener(com.cepheuen.elegantnumberbutton.view.ElegantNumberButton$OnClickListener)' on a null object reference
        at com.example.hreinaldo.apppidoncho.ConsultaCarrinho.onCreate(ConsultaCarrinho.java:39)

 

alguma alma caridosa poderia me auxiliar

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai criei um botão na mão e deu o mesmo erro affs

 

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at com.example.hreinaldo.apppidoncho.ConsultaCarrinho.onCreate(ConsultaCarrinho.java:59)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Leonardo Sandrini
      Eu criei duas classes customizadas de acordo com o que foi orientado por meu professor para fazer a requisição no servidor, mas estou recebendo um retorno 400 e não consigo descobrir a razão. Pesquisando, vi que pode ser algo relacionado ao cabeçalho, mas não sei como enviá-lo na minha requisição JSon customizada.
      Este é o código do meu do meu código customizado para requisição de JsonObject:
      package com.example.sandrini.pokeagenda; import com.android.volley.AuthFailureError; import com.android.volley.Response; import com.android.volley.RetryPolicy; import com.android.volley.toolbox.JsonObjectRequest; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; public class CustomJSONObjectRequest extends JsonObjectRequest { public CustomJSONObjectRequest(int method, String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) { super(method, url, jsonRequest, listener, errorListener); } @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<>(); headers.put("Content-Type", "application/json; charset=utf-8"); return headers; } @Override public RetryPolicy getRetryPolicy() { return super.getRetryPolicy(); } } Este é o código da minha Request Queue:
      package com.example.sandrini.pokeagenda; import android.content.Context; import com.android.volley.Cache; import com.android.volley.Network; import com.android.volley.RequestQueue; import com.android.volley.toolbox.BasicNetwork; import com.android.volley.toolbox.DiskBasedCache; import com.android.volley.toolbox.HurlStack; public class CustomVolleyRequestQueue { private static CustomVolleyRequestQueue mInstance; private static Context mCtx; private RequestQueue mRequestQueue; private CustomVolleyRequestQueue(Context context) { //recebe o contexto da aplicação //Assim a fila dura o ciclo de vida do app mCtx = context; mRequestQueue = getRequestQueue(); } public static synchronized CustomVolleyRequestQueue getmInstance(Context context) { if (mInstance == null) { mInstance = new CustomVolleyRequestQueue(context); } //retorna uma instância da fila return mInstance; } public RequestQueue getRequestQueue() { if (mRequestQueue == null) { //Cache 10MB Cache cache = new DiskBasedCache(mCtx.getCacheDir(), 10 *1024); Network network = new BasicNetwork(new HurlStack()); mRequestQueue = new RequestQueue(cache, network); mRequestQueue.start(); } return mRequestQueue; } } Este é o código da Activity onde estou tentando fazer a requisição:
      package com.example.sandrini.pokeagenda; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.Toast; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonRequest; import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; import java.util.EmptyStackException; public class CreateUserActivity extends AppCompatActivity implements Response.Listener, Response.ErrorListener { private static final String REQUEST_TAG = "CreateUser"; Trainer trainer = new Trainer(); EditText loginCreateInput, emailCreateInput, pwdCreateInput; Button createUserButton; private RequestQueue mQueue; JsonRequest jsonRequest; ProgressBar progressBarCreateUser; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_create_user); loginCreateInput = (EditText) findViewById(R.id.login_create_input); emailCreateInput = (EditText) findViewById(R.id.email_create_input); pwdCreateInput = (EditText) findViewById(R.id.pwd_create_input); createUserButton = (Button) findViewById(R.id.create_user_button); progressBarCreateUser = (ProgressBar) findViewById(R.id.progress_bar_create_user); progressBarCreateUser.setVisibility(View.INVISIBLE); } @Override protected void onStart() { super.onStart(); createUserButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (loginCreateInput.getText().toString().equals("")) { Toast.makeText(getApplicationContext(), "Please, set a login", Toast.LENGTH_SHORT).show(); } else if (emailCreateInput.getText().toString().equals("")) { Toast.makeText(getApplicationContext(), "Please, set an email", Toast.LENGTH_SHORT).show(); } else if (pwdCreateInput.getText().toString().equals("")) { Toast.makeText(getApplicationContext(), "Please, set a password", Toast.LENGTH_SHORT).show(); } else { String url = "http://192.168.25.6:8081/PokedexWS/webresources/pokews/poke/insert/trainer"; /*trainer.setUsername(loginCreateInput.getText().toString()); trainer.setEmail(emailCreateInput.getText().toString()); trainer.setPassword(pwdCreateInput.getText().toString());*/ trainer.setUsername("gato"); trainer.setEmail("gato"); trainer.setPassword("gato"); try { JSONObject jsonObject; Gson gson = new Gson(); String trainerToGson = gson.toJson(trainer); jsonObject = new JSONObject(trainerToGson); //String trainerToGson = "{\"username\":"+ "\"" + trainer.getUsername()+ "\"" + "," + //"\"email\":"+ "\"" + trainer.getEmail() + "\"" + "," + //"\"username\":"+ "\"" + trainer.getPassword()+ "\"" + "}"; //createUserButton.setText(trainerToGson); mQueue = CustomVolleyRequestQueue.getmInstance(CreateUserActivity.this.getApplicationContext()).getRequestQueue(); jsonRequest = new CustomJSONObjectRequest(Request.Method.POST, url, jsonObject, CreateUserActivity.this, CreateUserActivity.this); jsonRequest.getHeaders(); mQueue.add(jsonRequest); progressBarCreateUser.setVisibility(View.VISIBLE); } catch (Exception e) { e.printStackTrace(); } } } }); } @Override protected void onStop() { super.onStop(); if(mQueue != null) { mQueue.cancelAll(REQUEST_TAG); } } @Override public void onErrorResponse(VolleyError error) { progressBarCreateUser.setVisibility(View.INVISIBLE); Toast.makeText(getApplicationContext(), "Register failed", Toast.LENGTH_LONG).show(); Log.e("erro400", error.getMessage().toString()); Log.e("erro400", error.getCause().toString()); Log.e("erro400", error.getStackTrace().toString()); } @Override public void onResponse(Object trainerObject) { progressBarCreateUser.setVisibility(View.INVISIBLE); Toast.makeText(getApplicationContext(), "Registered successfully", Toast.LENGTH_LONG).show(); Intent intent = new Intent(CreateUserActivity.this, WelcomeTrainerActivity.class); startActivity(intent); finish(); } } Este é o meu Web Service:
      package ws; import com.google.gson.Gson; import dao.PokemonDAO; import dao.TrainerDAO; import java.util.ArrayList; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.Produces; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PUT; import javax.ws.rs.PathParam; import javax.ws.rs.core.MediaType; import model.Pokemon; import model.Trainer; /** * REST Web Service * * @author sandrini */ @Path("pokews") public class PokedexWebService { PokemonDAO pokemonDAO = new PokemonDAO(); TrainerDAO trainerDAO = new TrainerDAO(); @Context private UriInfo context; /** * Creates a new instance of PokedexWebService */ public PokedexWebService() { } /** * Retrieves representation of an instance of teste.GenericResource * @return an instance of java.lang.String */ @GET @Produces(MediaType.APPLICATION_XML) public String getXml() { //TODO return proper representation object throw new UnsupportedOperationException(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("poke/list") public ArrayList<Pokemon> pokeList() { return pokemonDAO.listPokemon(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("poke/fetch/{id}") public Pokemon pokeFetch(@PathParam("id") int id) { return pokemonDAO.fetchPokemon(id); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("poke/isFavorite/{id}") public String pokeIsFavorite(@PathParam("id") int id) { return pokemonDAO.isFavorite(id); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("poke/login/{login}/{pwd}") public Trainer pokelogin(@PathParam("login") String login, @PathParam("pwd") String pwd) { return trainerDAO.authUser(login, pwd); } @DELETE @Path("poke/delete/{id}") public boolean delete(@PathParam("id")int id) { return pokemonDAO.deletePokemon(id); } @POST @Consumes(MediaType.APPLICATION_JSON) @Path("poke/insert") public boolean pokeInsert(String content) { Gson gson = new Gson(); Pokemon pokemon = (Pokemon) gson.fromJson(content, Pokemon.class); return pokemonDAO.insertPokemon(pokemon); } @POST @Consumes(MediaType.APPLICATION_JSON) @Path("poke/insert/trainer") public boolean trainerInsert(String content) { Gson gson = new Gson(); Trainer trainer = (Trainer) gson.fromJson(content, Trainer.class); return trainerDAO.insertTrainer(trainer); } @PUT @Consumes(MediaType.APPLICATION_JSON) @Path("poke/update") public boolean pokeUpdate(String content) { Gson gson = new Gson(); Pokemon pokemon = (Pokemon) gson.fromJson(content, Pokemon.class); return pokemonDAO.updatePokemon(pokemon); } /** * PUT method for updating or creating an instance of GenericResource * @param content representation for the resource */ @PUT @Consumes(MediaType.APPLICATION_XML) public void putXml(String content) { } } Eu peguei um código java pra testar o WS e tá funcionando, só não estou conseguindo requisitar pelo android:
      package acessorest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.lang.ProcessBuilder.Redirect.Type; import java.net.HttpURLConnection; import java.net.URL; import javax.net.ssl.HttpsURLConnection; /** * * @author marcelosiedler */ public class HttpExemplo { private final String USER_AGENT = "Mozilla/5.0"; public static void main(String[] args) throws Exception { HttpExemplo http = new HttpExemplo(); Gson gson = new Gson(); Pokemon pokemon = new Pokemon(); java.lang.reflect.Type pokemonType = new TypeToken<Pokemon>() { }.getType(); String chamadaWS = "http://192.168.25.6:8081/PokedexWS/webresources/pokews/poke/insert/trainer"; Trainer trainer = new Trainer(); trainer.setUsername("quadrado"); trainer.setEmail("quadrado"); trainer.setPassword("quadrado"); //System.out.println(gson.toJson(trainer)); String trainerToGson = gson.toJson(trainer); /*String trainerToGson = "{\"username\":"+ "\"" + trainer.getUsername()+ "\"" + "," + "\"email\":"+ "\"" + trainer.getEmail() + "\"" + "," + "\"password\":"+ "\"" + trainer.getPassword()+ "\"" + "}";*/ //System.out.println(trainerToGson); //String retorn = http.sendGet(chamadaWS, "DELETE"); //pokemon = gson.fromJson(json, pokemonType); //System.out.println(retorn); http.sendPost(chamadaWS,trainerToGson, "POST"); } // HTTP GET request private String sendGet(String url, String method) throws Exception { URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); // optional default is GET con.setRequestMethod(method); //add request header con.setRequestProperty("User-Agent", USER_AGENT); int responseCode = con.getResponseCode(); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); //print result System.out.println(response.toString()); return response.toString(); } // HTTP POST request private void sendPost(String url, String parameters, String method) throws Exception { URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); //add reuqest header con.setRequestMethod(method); con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("User-Agent", USER_AGENT); con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); String urlParameters = parameters; // Send post request con.setDoOutput(true); DataOutputStream wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); int responseCode = con.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Post parameters : " + urlParameters); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); //print result System.out.println(response.toString()); } } android post volley singleton
    • Por Luis Felipe Rebecca
      Ao tentar cadastrar novo usuário no Firebase através do próprio recurso de autenticação, aparece um erro no Logcat que faz com que o botão cadastrar não faça a ação:
      06-21 12:25:48.635 16627-17650/br.com.whatsapp.projeto.whatsapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false (HTTPLog)-Static: isSBSettingEnabled false 06-21 12:25:49.755 16627-17650/br.com.whatsapp.projeto.whatsapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false (HTTPLog)-Static: isSBSettingEnabled false 06-21 12:35:19.215 16627-16633/br.com.whatsapp.projeto.whatsapp I/art: Debugger is no longer active Imagino que o problema seja das dependências ou de onde eu puxo o FirebaseAuth.


    • Por cristianomg
      Bom estou iniciando em android, e  cheguei até o ponto onde quero implementar um FloatingActionButton , que ao clicar neste botão eu seja direcionado a uma nova activity de cadastro por exemplo.
      Eu tenho estudado e desenvolvido com fragmentos que possuem seu adapter e gero a lista de dados com recyclerView, ok o contexto é este.
      Agora eu queria saber onde coloco e como implemento que este meu FloatingActionButton ao clicar nele eu seja direcionado a outra activity
       
      Vou deixar aqui meu codigo das intereções e em maiusculo o que foz pro botão floating, não sei se é o local certo para fazer esta chamado, pois fiquei confuso com o que li e estudei sobre o assunto.
       
      Meu ADAPTER
      public class TimelineAdapterImagens extends RecyclerView.Adapter<TimelineAdapterImagens.TimelinesHolder> { List<Timeline> listaTimelineImg; private View.OnClickListener listener; Button btnDetails, btnEditar; //AQUI ESTOU CRIANDO O BOTAO private android.support.design.widget.FloatingActionButton fab; public TimelineAdapterImagens(List<Timeline> listaTimelineImg) { this.listaTimelineImg = listaTimelineImg; } @NonNull @Override public TimelineAdapterImagens.TimelinesHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View vista = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_timeline_item_timeline,parent,false); return new TimelineAdapterImagens.TimelinesHolder(vista); //AQUI EU ENTENDI QUE TERIA A INSTANCIA DO BOTAO PARA O CLICK LOGO ABAIXO fab = (android.support.design.widget.FloatingActionButton) getActivity().findViewById(R.id.pink_icon); } @Override public void onBindViewHolder(@NonNull TimelineAdapterImagens.TimelinesHolder holder, int position) { holder.nomeUsuario.setText(listaTimelineImg.get(position).getNomeUsuario().toString()); holder.textoPostagem.setText(listaTimelineImg.get(position).getTextoPostagem().toString()); holder.idQuantLikes.setText(listaTimelineImg.get(position).getQuantLikes().toString()+" curtiram"); holder.dataPostagem.setText(listaTimelineImg.get(position).getDataPostagem().toString()); if(listaTimelineImg.get(position).getImagem() != null){ holder.idImagem.setImageBitmap(listaTimelineImg.get(position).getImagem()); }else{ holder.idImagem.setImageResource(R.drawable.sem_foto); } holder.setOnClickListeners(); } @Override public int getItemCount() { return listaTimelineImg.size(); } public class TimelinesHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView codigoPostagem,nomeUsuario,textoPostagem,idQuantLikes,dataPostagem ; ImageView idImagem; Button btnDetails,btnEditar; Context context; public TimelinesHolder(View itemView) { super(itemView); context = itemView.getContext(); nomeUsuario = (TextView) itemView.findViewById(R.id.nomeUsuario); textoPostagem = (TextView) itemView.findViewById(R.id.textoPostagem); idQuantLikes = (TextView) itemView.findViewById(R.id.idQuantLikes); dataPostagem = (TextView) itemView.findViewById(R.id.dataPostagem); idImagem = itemView.findViewById(R.id.idImagem); } // AQUI FIZ UM TESTE PARA VER SE AO CLICAR RECEBIA UMA MENSAGEM UE FOI CLICADO PARA SABER SE JA PODERIA IMPLEMENTAR A CHAMADA DE UMA OUTRA ACTIVITY @Override public void onClick(View v) { Toast.makeText(context,"oioiio",Toast.LENGTH_SHORT).show(); } public void setOnClickListeners() { } } }  
       
      MINHA ACTIVITY FRAG
       
      public static fragmentoGeraListaTimeline newInstance(String param1, String param2) { fragmentoGeraListaTimeline fragment = new fragmentoGeraListaTimeline(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View vista = inflater.inflate(R.layout.activity_main_time, container, false); listaTimeline=new ArrayList<>(); recyclerTimeline= (RecyclerView) vista.findViewById(R.id.recyclerviewtime); recyclerTimeline.setLayoutManager(new LinearLayoutManager(this.getContext())); recyclerTimeline.setHasFixedSize(true); request= Volley.newRequestQueue(getContext()); carregarWEBService(); return vista; } private void carregarWEBService() { // FAÇO A BUSCA DOS MEUS DADOS PARA LISTAR NO RECYCLER - TUDO OK ATE AQUI jsonObjectReq = new JsonObjectRequest(Request.Method.GET, url, null, this, this); request.add(jsonObjectReq); } // TODO: Rename method, update argument and hook method into UI event public void onButtonPressed(Uri uri) { if (mListener != null) { mListener.onFragmentInteraction(uri); } } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof fragmentoGeraListaTimeline.OnFragmentInteractionListener) { mListener = (fragmentoGeraListaTimeline.OnFragmentInteractionListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } @Override public void onErrorResponse(VolleyError error) { progresso.hide(); Toast.makeText(getContext(), "Não foi possível listar " +error.toString() , Toast.LENGTH_SHORT).show(); Log.i("ERROR", error.toString()); } @Override public void onResponse(JSONObject response) { progresso.hide(); Timeline timeline = null; JSONArray json = response.optJSONArray("timelineImg"); try { for(int i=0; i<json.length();i++){ timeline = new Timeline(); JSONObject jsonObject = null; jsonObject = json.getJSONObject(i); // AQUI O RETORNO DO MEU OBJETO JSON - TUDO CERTO FUNCIONANDO listaTimeline.add(timeline); } progresso.hide(); TimelineAdapterImagens adapter = new TimelineAdapterImagens(listaTimeline); recyclerTimeline.setAdapter(adapter); }catch (JSONException e){ e.printStackTrace(); progresso.hide(); Toast.makeText(getContext(), "Não foi possível listar os dados " +response , Toast.LENGTH_SHORT).show(); } } public interface OnFragmentInteractionListener { // TODO: Update argument type and name void onFragmentInteraction(Uri uri); }  
      Agora não sei se a chamada é no meu adapter e se esta no local correto ou se é no meu fragmento :(
    • Por cristianomg
      Boa noite pessoal,
      Estou tentando enviar uma imagem com putExtra e recuperar ele em outra activity de detalhes
       
      Activity de envio passo assim:
      Intent intent = new Intent(context, AnimeActivity.class); Bitmap bitmap = null; // your bitmap ByteArrayOutputStream _bs = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 50, _bs); intent.putExtra("marca",marcaAnuncio.getText()); intent.putExtra("modelo",modeloAnuncio.getText()); intent.putExtra("valor",valorAnuncio.getText()); intent.putExtra("imagem", _bs.toByteArray()); context.startActivity(intent);  e ao recupera uso na activityDetails assim:
      String marca =""; String valor= ""; String modelo = ""; String idImagem= ""; Bundle extras = getIntent().getExtras(); if(extras != null){ marca = extras.getString("marca"); modelo = extras.getString("modelo"); valor = extras.getString("valor"); idImagem = extras.getString("imgDetalhe"); } TextView tv_marca = (TextView) findViewById(R.id.tv_marca); tv_marca.setText(marca); TextView tv_modelo = (TextView) findViewById(R.id.tv_modelo); tv_modelo.setText(modelo); TextView tv_valor = (TextView) findViewById(R.id.tv_valor); tv_modelo.setText(valor); ImageView imgDetalhe = (ImageView) findViewById(R.id.idImagem);; imgDetalhe.setImageResource(Integer.parseInt(idImagem.toString())); }  
      Mas recebo este erro no LOG:
       
       
       
      Não sei o que fazer ja pesquisei e nao consegui ...
    • Por lukebz
      Sou novo no fórum e estou querendo começar programação para dispositivos móveis.
       
       
      Entendo de programação JAVA e quero fazer um aplicativo que deve ter acesso a um banco de dados, mas lembro de ter lido por ai que em dispositivo móvel não é bom fazer esta comunicação por XML, é verdade? E sobre o JSON  há algo relacionado?
       
      Obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.