Jump to content

Search the Community

Showing results for tags 'android'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 164 results

  1. Olá, estou fazendo um projeto em Android e estou com algumas dificuldades em ralação a fazer uma listagem de imagens(Feed), onde as imagens são retiradas do firebase e são apresentadas em um fragment. Um esquema praticamente igual ao Instagram; Por enquanto estou tentando fazer a listagem somente das imagens, porem as imagens não aparecem já fiz diversos testes e queria saber aonde posso estar errando. A variável 'listaFeed' localizada no FeedFragment não apresenta valor nenhum, o que pode estar causando a não impressão dessas imagens; Segue abaixo os códigos usados para fazer a listagem. MainActivity.java(Trecho que publica a imagem no Firebase Storage): @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.item_sair: deslogarUsuario(); return true; case R.id.item_adicionar: abrirCadastroContato(); return true; case R.id.item_configuracoes: return true; case R.id.item_pesquisar: return true; case R.id.item_camera: compartilharFoto(); return true; default: return super.onOptionsItemSelected(item); } } private void compartilharFoto() { Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, 1); } //GRAVAR IMAGEM @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); final Postagem postagem = new Postagem(); postagem.setIdUsuario(idUsuarioLogado); caminhoArquivo = data.getData(); if (requestCode == 1 && resultCode == RESULT_OK && data != null) { Bitmap imagem = null; try { imagem = MediaStore.Images.Media.getBitmap(getContentResolver(), caminhoArquivo); ByteArrayOutputStream stream = new ByteArrayOutputStream(); imagem.compress(Bitmap.CompressFormat.PNG, 75, stream); byte[] dadosImagem = stream.toByteArray(); SimpleDateFormat dateFormat = new SimpleDateFormat("ddmmaaaahhmmss"); String nomeImagem = dateFormat.format(new Date()); final StorageReference imagemRef = firebaseStorage .child("imagens") .child("postagens") .child(postagem.getId() + ".jpeg"); UploadTask uploadTask = imagemRef.putFile(caminhoArquivo); Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() { @Override public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception { if (!task.isSuccessful()) { throw task.getException(); } // Continue with the task to get the download URL return imagemRef.getDownloadUrl(); } }).addOnCompleteListener(new OnCompleteListener<Uri>() { @Override public void onComplete(@NonNull Task<Uri> task) { if (task.isSuccessful()) { Uri downloadUri = task.getResult(); postagem.setCaminhoFoto(downloadUri.toString()); if (postagem.salvar()) { Toast.makeText(MainActivity.this, "Sucesso ao salvar postagem!", Toast.LENGTH_SHORT).show(); } } } }); } catch (IOException e) { e.printStackTrace(); } } } FeedFragment.java(onde a listagem é exibida): public class FeedFragment extends Fragment { private RecyclerView recyclerFeed; private FeedAdapter feedAdapter; private List<Feed> listaFeed = new ArrayList<>(); private ValueEventListener valueEventListenerFeed; private DatabaseReference feedRef; private String idUsuarioLogado; public FeedFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_feed, container, false); Preferencias preferencias = new Preferencias(getActivity()); idUsuarioLogado = preferencias.getIdentificador(); feedRef = ConfiguracaoFirebase.getFirebase() .child("feed") .child(idUsuarioLogado); recyclerFeed = view.findViewById(R.id.recyclerFeed); feedAdapter = new FeedAdapter(listaFeed, getActivity()); recyclerFeed.setHasFixedSize(true); recyclerFeed.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerFeed.setAdapter(feedAdapter); return view; } private void listarFeed(){ valueEventListenerFeed = feedRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot ds: dataSnapshot.getChildren()){ listaFeed.add(ds.getValue(Feed.class)); } feedAdapter.notifyDataSetChanged(); } @Override public void onCancelled(DatabaseError databaseError) { } }); } @Override public void onStart() { super.onStart(); listarFeed(); Log.i("teste","teste"); } @Override public void onStop() { super.onStop(); feedRef.removeEventListener(valueEventListenerFeed); } } fragment_feed.xml(layout do fragment): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="android" xmlns:tools="tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".fragment.FeedFragment"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerFeed" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/holo_purple"> </android.support.v7.widget.RecyclerView> </LinearLayout> FeedAdapter.java(Adapter para fazer a listagem): public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.MyViewHolder>{ private List<Feed> listaFeed; private Context context; public FeedAdapter(List<Feed> listaFeed, Context context) { this.listaFeed = listaFeed; this.context = context; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemLista = LayoutInflater.from(parent.getContext()).inflate(R.layout.lista_postagem, parent, false); return new FeedAdapter.MyViewHolder(itemLista); } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { Feed feed = listaFeed.get(position); // Log.i("listaFeedPosition","listaFeed: " + listaFeed.get(position)); Uri uriFotoPostagem = Uri.parse(feed.getFotoPostagem()); Glide.with(context).load(uriFotoPostagem).into(holder.fotoPostagem); } @Override public int getItemCount() { return listaFeed.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { ImageView fotoPostagem; public MyViewHolder(View itemView) { super(itemView); fotoPostagem = itemView.findViewById(R.id.image_lista_postagem); } } } Feed(model com os getter and setter): public class Feed { private String id; private String fotoPostagem; public Feed() { } public String getFotoPostagem() { return fotoPostagem; } public void setFotoPostagem(String fotoPostagem) { this.fotoPostagem = fotoPostagem; } public String getId() { return id; } public void setId(String id) { this.id = id; } } lista_conversa(layout da lista): <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/image_lista_postagem" android:layout_width="match_parent" android:layout_height="300dp" android:scaleType="fitCenter" android:padding="8dp"/> </LinearLayout> </RelativeLayout>
  2. Euler Belfortt

    Help Slider Url Android

    Olá pessoal alguém pode me ajudar? Preciso abrir uma url ao clicar em uma imagem dentro de um textsliderview Se alguém puder me ajudar fico grato. textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() { @Override public void onSliderClick(BaseSliderView slider) { String url = "http://www.google.com"; // Preciso passar a slider_url aqui Toast.makeText(getActivity(), "ID '" + name.get("slider_url")+"' url '"+ name.get("slider_url") + "' url recebida.", Toast.LENGTH_LONG).show(); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(browserIntent); } });
  3. Olá bom dia. Tenho uma aplicação android na qual tenho um slider que pego os dados do webserver php. Gostaria de saber como faço para abrir a url vinda do banco de dados, quando a imagem for clicada. Este é meu código eu fiz o código pegando como base uma URL fixa de uma variavel local. mas preciso pegar o a url que vem do banco seria a var = slider_url Se alguém puder me ajudar fico muito grato! private void makeGetSliderRequest() { JsonArrayRequest req = new JsonArrayRequest(BaseURL.GET_SLIDER, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { Log.d(TAG, response.toString()); try { // Parsing json array response // loop through each json object // arraylist list variable for store data; final ArrayList<HashMap<String, String>> listarray = new ArrayList<>(); for (int i = 0; i < response.length(); i++) { JSONObject jsonObject = (JSONObject) response .get(i); final HashMap<String, String> url_maps = new HashMap<String, String>(); url_maps.put("slider_title", jsonObject.getString("slider_title")); url_maps.put("slider_image", BaseURL.IMG_SLIDER_URL + jsonObject.getString("slider_image")); url_maps.put("slider_url", BaseURL.IMG_SLIDER_URL + jsonObject.getString("slider_url")); listarray.add(url_maps); } for (HashMap<String, String> name : listarray) { final TextSliderView textSliderView = new TextSliderView(getActivity()); // initialize a SliderLayout textSliderView .description(name.get("slider_title")) .image(name.get("slider_image")) .setScaleType(BaseSliderView.ScaleType.Fit); //adiciono o slider title no slider textSliderView.bundle(new Bundle()); textSliderView.getBundle() .putString("extra", name.get("slider_title")); imgSlider.addSlider(textSliderView); textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() { @Override // Aqui eu capturo o clique na imagem e abro a url. // Preciso pegar a url desta string (slider_url) e inserir no lugar da string url public void onSliderClick(BaseSliderView slider) { String url = "http://www.google.com.br"; Toast.makeText(getActivity(), "clicou:", Toast.LENGTH_SHORT).show(); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(browserIntent); } }); } } catch (JSONException e) { e.printStackTrace(); Toast.makeText(getActivity(), "Error: " + e.getMessage(), Toast.LENGTH_LONG).show(); } hidepDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_SHORT).show(); hidepDialog(); } }); // Adding request to request queue AppController.getInstance().addToRequestQueue(req); }
  4. E ae pessoal, gostaria de uma orientação sobre um erro que estou tomando e não consegui contornar corretamente, meu conhecimento com android é de basico autodidata. Bom o cenário é eu ger uma lista vinda de uma api que traz dados do banco de dados , imagem, nome de cidade e descrição. Quero que ao clicar seja aberta uma activity onde a mesma exiba os dados da cidade selecionada exibindo a imagem maior, nome cidade, descrição e data de saida do turismo. Pois bem quando eu clico num item da lista tomo o erro: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference at android.content.ComponentName.<init>(ComponentName.java:77) at android.content.Intent.<init>(Intent.java:4280) at garagetalke.com.laftturismo.adaptador.GramadoAdapter$GramadoHolder.onClick(GramadoAdapter.java:97) Eu uso fragmento para gerar a lista no recyclerView e criei um activity DetalhesLugares com o seu xml certinho para exibir os dados da cidade que eu cliquei, o meu fragmento que gera a lista de itens esta abaixo: fragment_lista_lugares_gramado.java public class fragment_lista_lugares_gramado extends Fragment implements Response.Listener<JSONObject>, Response.ErrorListener{ private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; private String mParam1; private String mParam2; RecyclerView recyclerAnuncio; ArrayList<Lugares> listaLugares; ProgressDialog progresso; RequestQueue request; JsonObjectRequest jsonObjectReq; private fragment_lista_lugares_gramado.OnFragmentInteractionListener mListener; public fragment_lista_lugares_gramado() { // Required empty public constructor } public static fragment_lista_lugares_gramado newInstance(String param1, String param2) { fragment_lista_lugares_gramado fragment = new fragment_lista_lugares_gramado(); 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.places_recycler_list, container, false); listaLugares=new ArrayList<>(); recyclerAnuncio= (RecyclerView) vista.findViewById(R.id.listRecycler); recyclerAnuncio.setLayoutManager(new LinearLayoutManager(this.getContext())); recyclerAnuncio.setHasFixedSize(true); request= Volley.newRequestQueue(getContext()); carregarWEBService(); //aqui chamo minha API que me traz os dados do banco corretamente e exibe no App return vista; } private void carregarWEBService() { ....minha API que faz a busca } // 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 onDetach() { super.onDetach(); mListener = null; } @Override public void onErrorResponse(VolleyError error) { progresso.hide(); Toast.makeText(getContext(), "Não foi possível listar os lugares " +error.toString() , Toast.LENGTH_SHORT).show(); Log.i("ERROR", error.toString()); } @Override public void onResponse(JSONObject response) { progresso.hide(); Lugares lugares = null; Retorno do meu json da API - OK try { for(int i=0; i<json.length();i++){ lugares = new Lugares(); JSONObject jsonObject = null; jsonObject = json.getJSONObject(i); lugares.setId(jsonObject.optString("id")); //seto todos os dados de retorno - OK listaLugares.add(lugares); } progresso.hide(); GramadoAdapter adapter = new GramadoAdapter(listaLugares, fragment_lista_lugares_gramado.this); recyclerAnuncio.setAdapter(adapter); }catch (JSONException e){ e.printStackTrace(); progresso.hide(); Toast.makeText(getContext(), "Não foi possível listar os lugares " +response , Toast.LENGTH_SHORT).show(); } } public interface OnFragmentInteractionListener { // TODO: Update argument type and name void onFragmentInteraction(Uri uri); } } Aqui esta meu Adapter : GramadoAdapter.java public class GramadoAdapter extends RecyclerView.Adapter<GramadoAdapter.GramadoHolder> { ArrayList<Lugares> listaLugares = new ArrayList<>(); fragment_lista_lugares_gramado ctx; Context fragment_lista_lugares_gramado; public GramadoAdapter(ArrayList<Lugares> listaLugares, fragment_lista_lugares_gramado ctx ){ this.listaLugares = listaLugares; this.ctx = ctx; } @NonNull @Override public GramadoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_lugares,parent,false); GramadoHolder gramadoViewHolder = new GramadoHolder(view, fragment_lista_lugares_gramado,listaLugares); return gramadoViewHolder; } @Override public void onBindViewHolder(@NonNull GramadoHolder holder, int position) { Lugares LUG = listaLugares.get(position); holder.id.setText(LUG.getId().toString()); holder.cidade.setText(LUG.getCidade()); holder.descricao.setText(LUG.getDescricao()); holder.dataSaida.setText("Quando? "+(LUG.getDataSaida())); if(listaLugares.get(position).getImagem() != null){ holder.idImagem.setImageBitmap(LUG.getImagem()); }else{ holder.idImagem.setImageResource(R.drawable.publicacao_sem_foto); } } @Override public int getItemCount() { return listaLugares.size(); } public class GramadoHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView id, cidade, descricao, dataSaida, lugaresOnibus, valor, rating; ImageView idImagem; ArrayList<Lugares> listaLugares = new ArrayList<Lugares>(); Context ctx; Context fragment_lista_lugares_gramado; public GramadoHolder(View view, Context fragment_lista_lugares_gramado, ArrayList<Lugares> listaLugares) { super(view); this.listaLugares = listaLugares; view.setOnClickListener(this); id = (TextView) view.findViewById(R.id.id_place); cidade = (TextView) view.findViewById(R.id.cidade_place); descricao = (TextView) view.findViewById(R.id.descricao_place); dataSaida = (TextView) view.findViewById(R.id.datasaida_place); idImagem = view.findViewById(R.id.place_image); } @Override public void onClick(View v) { int position = getAdapterPosition(); Lugares lugares = this.listaLugares.get(position); //Eu acho que aqui esta meu problema mas nao sei o que pode ser...tipo nao abre a activity detalhes //ja tentei getActivity(), getApplication() e outras coisas tb, como é o fragmento que gera a lista //então nao o que fazer pra instanciar Intent intent = new Intent(fragment_lista_lugares_gramado, DetalhesLugares.class); intent.putExtra("tvImagem",lugares.getImagem()); intent.putExtra("tvCidade",lugares.getCidade()); intent.putExtra("tvdescricao",lugares.getDescricao()); this.fragment_lista_lugares_gramado.startActivity(intent); } } } DetalhesActivity.java ImageView imageView; TextView text_Cidade, text_Descricao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detalhes_lugares); imageView = (ImageView) findViewById(R.id.tvImagem); text_Cidade = (TextView) findViewById(R.id.tvCidade); text_Descricao = (TextView) findViewById(R.id.tvDesricao); imageView.setImageResource(getIntent().getIntExtra("tvImagem",00)); text_Cidade.setText("Cidade: "+getIntent().getStringExtra("tvCidade")); text_Descricao.setText("Descrição: "+getIntent().getStringExtra("tvdescricao")); } Alguém sabe me orientar do que fazer pra conseguir?
  5. kathsystems

    Android permissão para XML

    Olá, Pessoal estou tentando criar um arquivo xml em tempo de execução no Android: "CliendDataSet.SaveToFile('/data/data/App/files/Arquivo.xml');" .Não da erro mas não cria o arquivo. Meu Mainfast: <?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%" android:installLocation="%installLocation%"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> String[] permissoes = new String[]{ Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS,}; PermissionUtils.validate(this, 0, permissoes); <%uses-permission%> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_OWNER_DATA" /> <uses-permission android:name="android.permission.READ_OWNER_DATA" /> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" android:icon="%icon%" android:theme="%theme%" android:hardwareAccelerated="%hardwareAccelerated%"> alguém sabe onde estou errando?
  6. Vulnerabilidade perigosa impacta todos os smartphones Android
  7. Galera estou tendo um problema já faz algum tempo e não estou conseguindo uma solução. Estou utilizando o Firebase como banco de dados e não estou conseguindo usar a autenticação dele. Fiz meus códigos com auxilio de alguns cursos online e ele está funcional, aparentemente, porem quando executo e dou inicio no processo de cadastro ele mostra a seguinte mensagem no Logcat e não registra o usuário no banco: Alguém teria alguma solução? 06-26 07:21:39.348 29507-29507/br.com.tecmafandroid.projeto.tecmaf W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@da4f097 06-26 07:21:39.348 29507-29598/br.com.tecmafandroid.projeto.tecmaf W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found. 06-26 07:21:39.348 29507-29598/br.com.tecmafandroid.projeto.tecmaf W/GooglePlayServicesUtil: Google Play services out of date. Requires 12451000 but found 11975436 Não sei muito bem o q essa mensagem esta querendo dizer, já tentei modificar vários arquivos, mas por enquanto o "erro" persiste. Segue os trechos de código responsáveis pela autenticação no Firebase: -Activity de cadastro usuário package br.com.tecmafandroid.projeto.tecmaf.activity; import android.support.annotation.NonNull; 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.Toast; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import br.com.tecmafandroid.projeto.tecmaf.R; import br.com.tecmafandroid.projeto.tecmaf.config.ConfiguracaoFirebase; import br.com.tecmafandroid.projeto.tecmaf.model.Usuario; public class CadastroUsuarioActivity extends AppCompatActivity { private EditText nome; private EditText email; private EditText senha; private Button botaoCadastrar; private Usuario usuario; private FirebaseAuth autenticacao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cadastro_usuario); nome = (EditText) findViewById(R.id.edit_cadastro_nome); email = (EditText) findViewById(R.id.edit_cadastro_email); senha = (EditText) findViewById(R.id.edit_cadastro_senha); botaoCadastrar = (Button) findViewById(R.id.bt_cadastro); botaoCadastrar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { usuario = new Usuario(); usuario.setNome(nome.getText().toString()); usuario.setEmail(email.getText().toString()); usuario.setSenha(senha.getText().toString()); cadastrarUsuario(); } }); } private void cadastrarUsuario() { autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao(); autenticacao.createUserWithEmailAndPassword( usuario.getEmail(), usuario.getSenha() ).addOnCompleteListener(CadastroUsuarioActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()){ Toast.makeText(CadastroUsuarioActivity.this,"Sucessor ao cadastrar usuario",Toast.LENGTH_LONG).show(); }else { Toast.makeText(CadastroUsuarioActivity.this,"Erro ao cadastrar usuario",Toast.LENGTH_LONG).show(); } } }); } } -build.gradle: app apply plugin: 'com.android.application' android { compileSdkVersion 27 defaultConfig { applicationId "br.com.tecmafandroid.projeto.tecmaf" minSdkVersion 15 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //noinspection GradleCompatible implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.google.firebase:firebase-core:16.0.0' implementation 'com.google.firebase:firebase-database:15.0.0' implementation 'com.android.support:design:27.1.1' implementation 'com.github.rtoshiro.mflibrary:mflibrary:1.0.0' implementation 'com.google.firebase:firebase-auth:15.0.0' } apply plugin: 'com.google.gms.google-services' -Configuração do Firebase package br.com.tecmafandroid.projeto.tecmaf.config; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; public final class ConfiguracaoFirebase { private static DatabaseReference referenciaFirebase; private static FirebaseAuth autenticacao; public static DatabaseReference getFirebase(){ if (referenciaFirebase == null){ referenciaFirebase = FirebaseDatabase.getInstance().getReference(); } return referenciaFirebase; } public static FirebaseAuth getFirebaseAutenticacao(){ if (autenticacao == null){ autenticacao = FirebaseAuth.getInstance(); } return autenticacao; } } -Model usuário package br.com.tecmafandroid.projeto.tecmaf.model; public class Usuario { private String id; private String nome; private String email; private String senha; public Usuario(){ } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } }
  8. 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
  9. 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.
  10. cristianomg

    Ajuda com click FloatingActionButton

    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 :(
  11. helkton

    Ajuda Com ElegantNumber android

    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
  12. lukebz

    Acesso a banco de dados

    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.
  13. 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 ...
  14. Pessoal, bom dia! Estou com um pequeno problema: A biblioteca ksoap está me retornando um erro ao tentar integrar com um webservice nusoap, sempre estou recebendo o retorno nulo, erro: Não sei se tem a ver com os parametros namespace, soap_action e method_name, que podem estar configurados incorretamente. Segue abaixo a minha configuração do ksoap com esses dados: @Override protected String doInBackground(Void... params) { Log.i(TAG, "doInBackground"); System.out.println("INICIO##########################"); String SOAP_ACTION = "urn:BomPrato#listaIntro"; String METHOD_NAME = "Notificacoes.listaIntro"; String NAMESPACE = "urn:BomPrato"; String URL = "http://www.artistadaweb.com.br/ws/index.php"; SoapObject resposta = null; InputStream resultado; try { SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = false; envelope.setOutputSoapObject(Request); HttpTransportSE ht = new HttpTransportSE(URL); ht.debug = true; System.out.println("aqui3"); ht.call(SOAP_ACTION, envelope); System.out.println("aqui2"); resposta = (SoapObject) envelope.bodyIn; System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXaqui1"); // resposta.getProperty("item"); System.out.println("RESPOSTAAAAA: "+resposta.getProperty(0).toString()); } catch (Exception ex) { Log.e(TAG, "Error: " + ex.getMessage()); } return "fdsdsfds"; } Segue o WS de testes que estou utilizando (apenas o metodo listaIntro que está operando por enquanto): http://www.artistadaweb.com.br/ws/index.php Conto com a ajuda de vcs, valeu!
  15. Olá galera olha eu aqui novamente Bom seguinte galera tenho um expandableListView, pegando os dados tanto CATEGORIA quanto SUB-CATEGORIA lá do meu banco de dados Mysql funfando belezinha tudo tranquilo, agora como proceder para esta sub-categoria clicável ao clicar eu leva-lo para outra activity Tipo eu já pego o GRUPO CLICADO ASSIM .... expListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { Toast.makeText(getBaseContext(),lstGrupos.get(groupPosition)+"",Toast.LENGTH_LONG).show(); return false; } }); Ele me mostra a categoria clicada certinha Agora como fazer o mesmo com a sub-categoria e leva-la para outra Activity Tentei Assim... expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Toast.makeText(getBaseContext(), lstItensGrupo.get(lstGrupos.get(groupPosition)).get(childPosition)+ " categoria "+ lstGrupos.get(groupPosition) + " selecionado ", Toast.LENGTH_LONG).show(); return false; } }); Mais ele me retorna assim ohh "nome do pacote até a pasta model e a classe chamada Produto" - com.example.helton.app.model.Produto@545545 "nome do pacote até a pasta model e a classe chamada Produto" - com.example.helton.app.model.Produto@868968 e assim por diante tipo cada item clicado é um numero Me ajudem
  16. cristianomg

    Abrir detalhes de um item no RecycleView

    Bom dia, Estou iniciando meu aprendizado autodidata em android, e cheguei ao ponto de listar meu itens do banco de dados usando um recycleView até ai ok, tudo funciona certo, gera a lista de anuncios no App Agora me deparo com o fato de clicar em um item da lista deste recycle e exibir a activity de detalhes. Pelo que li e exemplos que tentei implementar não consegui desenvolver um codigo simples que execute esta ação, pois cada um tem uma maneira de codificar esta chamada. O meu recycleque gera a lista de itens esta desta forma: O meu MainActivity contém estes dados que geram as info para a recycleView @Override public void onBindViewHolder(@NonNull AnunciosHolder holder, int position) { holder.marcaAnuncio.setText(listaAnuncioImg.get(position).getMarca().toString()); holder.modeloAnuncio.setText(listaAnuncioImg.get(position).getModelo().toString()); holder.anoAnuncio.setText(listaAnuncioImg.get(position).getAno().toString()); holder.valorAnuncio.setText(listaAnuncioImg.get(position).getValor().toString()); if(listaAnuncioImg.get(position).getImagem() != null){ holder.idImagem.setImageBitmap(listaAnuncioImg.get(position).getImagem()); }else{ holder.idImagem.setImageResource(R.drawable.sem_foto); } holder.idImagem.setTag(position); holder.idImagem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CRIEI ESTE METODO PARA FAZER A CHAMADA DA ACTIVITY QUE RECEBERA OS DADOS DO HOLDER QUE SAO EXIBIDOS NA RECYCLE NÃO SEI COMO CHAMAR A ACTIVITY E PASSAR AS INFORMAÇÕES A ELE } }); } O meu layout que recebera os dados é o activity_detail_anuncio.xml image_view_detail e text_view_detail , que recebera o textView do holder.marcaAnucnio <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/linearLayout" > <ImageView android:id="@+id/image_view_detail" android:layout_width="match_parent" android:layout_height="300dp" android:src="@mipmap/ic_launcher" /> <TextView android:id="@+id/text_view_detail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginStart="16dp" android:text="Likes: " android:textSize="30sp" /> </LinearLayout> O meu Adapter esta desta forma: @Override public void onBindViewHolder(@NonNull AnunciosHolder holder, int position) { holder.marcaAnuncio.setText(listaAnuncioImg.get(position).getMarca().toString()); holder.modeloAnuncio.setText(listaAnuncioImg.get(position).getModelo().toString()); holder.anoAnuncio.setText(listaAnuncioImg.get(position).getAno().toString()); holder.valorAnuncio.setText(listaAnuncioImg.get(position).getValor().toString()); if(listaAnuncioImg.get(position).getImagem() != null){ holder.idImagem.setImageBitmap(listaAnuncioImg.get(position).getImagem()); }else{ holder.idImagem.setImageResource(R.drawable.sem_foto); } holder.idImagem.setTag(position); holder.idImagem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); } @Override public int getItemCount() { return listaAnuncioImg.size(); } public class AnunciosHolder extends RecyclerView.ViewHolder { RelativeLayout parentLayout; TextView codigoAnuncio,marcaAnuncio, modeloAnuncio, anoAnuncio, corAnuncio, valorAnuncio; ImageView idImagem; public AnunciosHolder(View itemView) { super(itemView); marcaAnuncio = (TextView) itemView.findViewById(R.id.marca); modeloAnuncio = (TextView) itemView.findViewById(R.id.modelo); anoAnuncio = (TextView) itemView.findViewById(R.id.ano); corAnuncio = (TextView) itemView.findViewById(R.id.cor); valorAnuncio = (TextView) itemView.findViewById(R.id.valor); idImagem = itemView.findViewById(R.id.idImagem); } } A Activity de Detalhes : public class DetailsActivity extends AppCompatActivity { ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail_anuncio); } } Eu entendo que tenho que gerar o OnClickListener na MainActivity dentro do onBindViewHolder, mas não sei como apontar isso lá no Adapter e este chamar a outra activityDetais exibindo o meu XML com as informações do item clicado
  17. Possuo uma validação de login que me retorna a msg de sucesso quando o usuario existe na base, e após o response eu queria logo ja chamar a activity principal do meu aplicativo...como eu posso declarar isso, sou iniciante em android :) Na linha 21 queria saber como implementar isso 1 BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8")); 2 String data = URLEncoder.encode("login_name","UTF-8")+"="+URLEncoder.encode(login_name,"UTF-8")+"&"+ 3 URLEncoder.encode("login_pass","UTF-8")+"="+URLEncoder.encode(login_pass,"UTF-8"); 4 bufferedWriter.write(data); 5 bufferedWriter.flush(); 6 bufferedWriter.close(); 7 outputStream.close(); 8 InputStream inputStream = httpURLConnection.getInputStream(); 9 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 10 String response = ""; 11 String line = ""; 12 while ((line = bufferedReader.readLine())!=null) 13 { 14 response+= line; 15 } 16 bufferedReader.close(); 17 inputStream.close(); 18 httpURLConnection.disconnect(); 19 return response; 20 21 NESTE ESPAÇO QUERIA CHAMAR A ACTIVITY POR EXEMPLO MenuActivity 22 23 } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return null; }
  18. Pessoal estou desenvolvendo um aplicativo de comparação de preços e preciso acessar do firebase (ver imagem) a o nome , imagem ,idcategoria e os produtos que é outro nó . Já consigo recuperar as categoria mas como recuperar os produtos de cada categoria baseado no campo "idCat" pra ficar como o print da segunda imagem ??
  19. Fala pessoal, beleza? Esses dias eu estava tendo umas ideias e uma delas foi desenvolver um app parecido com esses que mostram ao usuário passagens aéreas, como o Google Flights, Skyscanner, Voopter, ... Porém, não de passagens aéreas, mas sim de eventos que estão para acontecer. Notei que esses apps de passagens mostram sempre os mesmos resultados e mesmas ofertas, o que me faz achar que todos buscam de uma única source. As minhas dúvidas/curiosidades são: de onde essas informações são extraídas? De que forma o app busca? Alguém sabe/tem uma ideia de como isso pode ser desenvolvido? Existe uma API? Se eu quisesse desenvolver algo parecido eu teria acesso à essas informações? Seja para ofertas de passagens ou até mesmo para a ideia que eu tive, de eventos... Valeu!
  20. Atualização nociva do Google rouba dados pessoais e contamina milhares de computadores
  21. Olá pessoal estou desenvolvendo um app para android no visual Studio que calcula a idade de um cachorro para anos humanos, para isso estou recuperando o numero digitado (números) de uma TextView convertendo em uma String e depois para um Int para fazer o cálculo, roda sem erros, mas quando clica no botão para calcular o app simplesmente fecha com mensagem de erro, testei no emulador e no próprio cel e dá o mesmo erro, por favor me ajudem... segue o código... package idadedecachorro.com.idadedecachorro; import android.icu.text.AlphabeticIndex; 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 { private Button botaoDescobrir; private EditText Idade; private TextView Resultado; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Idade = findViewById(R.id.lblIdade); botaoDescobrir = findViewById(R.id.btnDescobrir); Resultado = findViewById(R.id.txtResult); botaoDescobrir.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int valorDigitado; int result; String textoDigitado; textoDigitado = Idade.getText().toString(); valorDigitado = Integer.parseInt(textoDigitado); result = valorDigitado * 7; Resultado.setText(result); } }); } }
  22. Rodrigo Ferreira Santos

    Como capturar informaçoes do Hardware do celular

    pessoal estou usando o Delphi para desenvolver uma aplicação para celular onde eu preciso pegar as informaçoes do SIM card e ver operadora sinal e executar instruções, ate mesmo para eu saber quantos chips tem o celular e por ai vai alguem sabe um componente ou um meio de eu conseguir isso ?
  23. Felipe souza

    O que estudar para ser um dev em android?

    Estou muito interessado em aprender a programar em Android como minha primeira linguagem (por motivos pessoais), mas não sei o que estudar (e não posso fazer curso presencial) Eu devo começar aprendendo a lógica de programação e depois a linguagem ou tem mais alguma coisa? Por favor, seria grato se pudessem me ajudar.
  24. Ola pessoal. Estou com um app rodando no webview. Ele é um sistema na web e o webview como o app. No sistema, tem determinadas ações que o sistema envia push notification para o usuário. Fiz a integração com o firebase cloud messaging Javascript. Mas ele nao funciona no webview, somente acessando diretamente pelo browser. Pelo que estava pesquisando, eu teria que configurar a parte de javascript, para web, e no webview configurar de novo para funcionar no webview, e uso a base de dados na web pra enviar os push. Então eu precisaria vincular cada token que o firebase gera para o dispositivo com o ID do usuário na base de dados, porém, o ID eu pego ele pela web, e o token, o firebase envia direto para o webview. Então não sei como faria para vincular esse token que o firebase gera com o ID do usuário. Alguém sabe se tem alguma forma? Desde já agradeço!
  25. Oracle vence Google em ação bilionária por uso do Java no Android
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.