Boa tarde/noite/dia galera, é o seguinte, eu to fazendo um app mas to “emperrado”.
a dúvida é:
Eu preciso setar um valor 1 ou 0 (na “primeira” activity) com o Radio Botton (que tem opções de “Sim” ou “Não”) ou seja quando eu clico “SIM” no Rádio Botton quero setar a variável 1 que tem o valor numérico 1, se eu escolho “Não” setar a variável 0 que corresponde ao valor numérico 0.
Depois disso eu preciso “levar” o valor escolhido para a próxima Activity que terá as mesmas opções só que com valores diferente. “SIM” agora vale 2, e “NãO” SEMPRE SERá 0. e somar esses valores numa terceira Activity e mostrar na tela o resultado.
Ps: Desculpa se postei em lugar errado, ou algo do tipo errado.
E para somar e mostrar na 3° Activity? Mostrar em tamanho Grande na tela.
Ps: Na verdade são 6 Activitys pra mostrar a Soma de todas na 7°. mas com esse exemplo eu reproduzo nas outras ^^ obrigado.
F
fabriciov
Qual erro ?
publicclassUtils{publicstaticfinalKEY_BUNDLE="KEY_BUNDLE";publicstaticfinalKEY_ACTIVITY_1="KEY_ACTIVITY_1";publicstaticfinalKEY_ACTIVITY_2="KEY_ACTIVITY_2";publicstaticfinalKEY_ACTIVITY_3="KEY_ACTIVITY_3";}//Activity1protectedvoidonCreate(){Bundlebundle=newBundle();bundle.putInt(Utils.KEY_ACTIVITY_1,mRationChoose);//adiciona valor ao bundleIntentintent=newIntent(getApplicationContext(),Activity2.class);intent.putExtra(Utils.KEY_BUNDLE,bundle);startActivity(intent);//chamar activity 2}//Activity2protectedvoidonCreate(){IntentmyIntent=getIntent();Bundlebundle=myIntent.getBundleExtra(Utils.KEY_BUNDLE);intmRationChoose=bundle.getIntExtra(Utils.KEY_ACTIVITY_2,0);bundle.putInt(KEY_ACTIVITY_3,mRatioChooser2);//adiciona outro valor para o bundle recebido na activity anteriorIntentintent=newIntent(getApplicationContext(),Activity3.class);intent.putExtra(Utils.KEY_BUNDLE,bundle);//encaminha o bundle para a proxima activitystartActivity(intent);//chamar activity 3}
B
bi01soft
fabriciov:
Qual erro ?
publicclassUtils{publicstaticfinalKEY_BUNDLE="KEY_BUNDLE";publicstaticfinalKEY_ACTIVITY_1="KEY_ACTIVITY_1";publicstaticfinalKEY_ACTIVITY_2="KEY_ACTIVITY_2";publicstaticfinalKEY_ACTIVITY_3="KEY_ACTIVITY_3";}//Activity1protectedvoidonCreate(){Bundlebundle=newBundle();bundle.putInt(Utils.KEY_ACTIVITY_1,mRationChoose);//adiciona valor ao bundleIntentintent=newIntent(getApplicationContext(),Activity2.class);intent.putExtra(Utils.KEY_BUNDLE,bundle);startActivity(intent);//chamar activity 2}//Activity2protectedvoidonCreate(){IntentmyIntent=getIntent();Bundlebundle=myIntent.getBundleExtra(Utils.KEY_BUNDLE);intmRationChoose=bundle.getIntExtra(Utils.KEY_ACTIVITY_2,0);bundle.putInt(KEY_ACTIVITY_3,mRatioChooser2);//adiciona outro valor para o bundle recebido na activity anteriorIntentintent=newIntent(getApplicationContext(),Activity3.class);intent.putExtra(Utils.KEY_BUNDLE,bundle);//encaminha o bundle para a proxima activitystartActivity(intent);//chamar activity 3}
Nessa Parte.
Essas são as linhas de erro.
" public class Utils{
public static final KEY_BUNDLE = "KEY_BUNDLE";
public static final KEY_ACTIVITY_1 = "KEY_ACTIVITY_1";
public static final KEY_ACTIVITY_2 = "KEY_ACTIVITY_2";
public static final KEY_ACTIVITY_3 = "KEY_ACTIVITY_3"; "
Precisa importar alguma coisa ou declarar algo *KEY_ACTIVITY* por exemplo? (eu sei que preciso declarar a variável "mRatioChooser") ? esse FINAL é o que da erro, eu não sei bem pra que serve o "Final". se quiser te mando minha Activity 1
Segue minha Activity 1. se puder dar uma olhada e "adaptar" o código, pois só da erro aqui. obrigado.
AbrirAtividade1 é do botão pra mudar pra minha activity 2 que se chama Tabela2.
F
fabriciov
Esqueci de declara o tipo
public class Utils{
public static final String KEY_BUNDLE = "KEY_BUNDLE";
public static final String KEY_ACTIVITY_1 = "KEY_ACTIVITY_1";
public static final String KEY_ACTIVITY_2 = "KEY_ACTIVITY_2";
public static final String KEY_ACTIVITY_3 = "KEY_ACTIVITY_3";
}
mRatioChooser é o valor que você quer passar, no caso um int.
aconselho estudar java básico primeiramente do que tentar aprender direto com Android.
B
bi01soft
fabriciov:
Esqueci de declara o tipo
public class Utils{
public static final String KEY_BUNDLE = "KEY_BUNDLE";
public static final String KEY_ACTIVITY_1 = "KEY_ACTIVITY_1";
public static final String KEY_ACTIVITY_2 = "KEY_ACTIVITY_2";
public static final String KEY_ACTIVITY_3 = "KEY_ACTIVITY_3";
}
mRatioChooser é o valor que você quer passar, no caso um int.
aconselho estudar java básico primeiramente do que tentar aprender direto com Android.
Assim, eu to aprendendo sabe, faço Ciências da Computação (Tô no primeiro período, vendo Phyton em Programação 1, vou ver Java em Programação 2 no segundo período, eu entendo um pouco de Java, mas to querendo melhorar e aprender mesmo sem a universidade aprendendo java para android). Obrigado.
Essa ai é minha Segunda Activity, poderia me mostrar como ficará? ainda to com dúvidas pra ver se ainda vai ficar as “keys” e como vai “aparar”, ja setei o botão que atribuirá a int pra enviar. Por conta da “Utils”, tem que colocar todas as strings em todas as activitys?
F
fabriciov
packagebi01soft.mygbiz.binumeral.com;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importandroid.view.View;publicclassTabela2extendsActivity{privateBundlemBundle=null;privateintmIntDaTabela2=0;//caso precise dele nessa activity@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.tabela2);IntentmyIntent=getIntent();mBundle=myIntent.getBundleExtra(Utils.KEY_BUNDLE);mIntDaTabela2=bundle.getIntExtra(Utils.KEY_ACTIVITY_1,0);}publicvoidgoButtonClicked(Viewv){finish();}publicvoidAbrirAtividade1(Viewv){IntentmyIntent=newIntent(v.getContext(),Tabela3.class);if(mBundle!=null){mBundle.putInt(KEY_ACTIVITY_2,valorIntQueQuerEnviarParaTabela3);myIntent.putExtra(Utils.KEY_BUNDLE,mBundle);}else{Bundlebundle=newBundle();bundle.putInt(KEY_ACTIVITY_2,valorIntQueQuerEnviarParaTabela3);myIntent.putExtra(Utils.KEY_BUNDLE,bundle);}startActivity(myIntent);finish();}}
A primeira tabela ficou assim como tá ai mas ta com erro, por que se eu coloco a minha int dentro do OnClick da Erro não sei porque.
Olha a segunda tabela ta com erro nos mBundle. e KEY_Activity. Dúvida não tem que Declarar também igual na primeira Activity não?
packagebi01soft.mygbiz.binumeral.com;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importandroid.view.View;publicclassTabela2extendsActivity{privateBundlemBundle=null;privateintEnviarValor2=2;//caso precise dele nessa activity @OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.tabela2);IntentmyIntent=getIntent();mBundle=myIntent.getBundleExtra(Utils.KEY_BUNDLE);EnviarValor2=bundle.getIntExtra(Utils.KEY_ACTIVITY_1,0);}publicvoidgoButtonClicked(Viewv){finish();}intValorParcial=EnviarValor+EnviarValor2;publicvoidAbrirAtividade1(Viewv){IntentmyIntent=newIntent(v.getContext(),Tabela3.class);if(mBundle!=null){mBundle.putInt(KEY_ACTIVITY_2,ValorParcial);myIntent.putExtra(Utils.KEY_BUNDLE,mBundle);}else{Bundlebundle=newBundle();bundle.putInt(KEY_ACTIVITY_2,ValorParcial);myIntent.putExtra(Utils.KEY_BUNDLE,bundle);}startActivity(myIntent);finish();}}
Essa ai é a minha segunda tabela com as "configurações" que precisa ter (eu adicionei o valor somar na int pois a tabela 3 receberá o resultado da soma da int da tabela1 + tabela 2) e a tabela2 terá um valor dependendo se a pessoa Clicar no "Sim" ou "Não". Se clicar Sim vai atribuir uma int com Valor 2 que será somado com o valor 1 que é da Int da tabela 1. entendeu?
F
fabriciov
Não é preciso redeclarar, pois são variaveis estáticas… vão ficar em memoria durante a execução inteira da aplicação.
Crie uma classe chama Utils (em arquivo separado) que o erro da KEY vai sumir, acredito que seja por que ela é uma inner-Class e o compilador não consegue achar o caminho.
comando “final” significa que aquele valor da variavel ja é o final, ou seja, não será alterado (não deixará alterar).
Passa o mouse em cima do erro e leia, provavelmente é erro banal.
B
bi01soft
fabriciov:
Não é preciso redeclarar, pois são variaveis estáticas.. vão ficar em memoria durante a execução inteira da aplicação.
Crie uma classe chama Utils (em arquivo separado) que o erro da KEY vai sumir, acredito que seja por que ela é uma inner-Class e o compilador não consegue achar o caminho.
comando "final" significa que aquele valor da variavel ja é o final, ou seja, não será alterado (não deixará alterar).
Passa o mouse em cima do erro e leia, provavelmente é erro banal.
Estou com erros nos Bundles, eu criei a Classe Utils e ainda continuar com erros nas "keys" apenas nas tabelas 2, mas acho que é por conta dos bundles, vc consegue ver o erro?
segue minha tabela 2.
packagebi01soft.mygbiz.binumeral.com;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importandroid.view.View;publicclassTabela2extendsActivity{privateBundlemBundle=null;privateintEnviarValor2=2;//caso precise dele nessa activity @OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.tabela2);IntentmyIntent=getIntent();mBundle=myIntent.getBundleExtra(Utils.KEY_BUNDLE);EnviarValor2=bundle.getIntExtra(Utils.KEY_ACTIVITY_1,0);}publicvoidgoButtonClicked(Viewv){finish();}intValorParcial="EnviarValor"+"EnviarValor2";publicvoidAbrirAtividade1(Viewv){IntentmyIntent=newIntent(v.getContext(),Tabela3.class);if(mBundle!=null){mBundle.putInt(KEY_ACTIVITY_2,ValorParcial);myIntent.putExtra(Utils.KEY_BUNDLE,mBundle);}else{Bundlebundle=newBundle();bundle.putInt(KEY_ACTIVITY_2,ValorParcial);myIntent.putExtra(Utils.KEY_BUNDLE,bundle);}startActivity(myIntent);finish();}}
F
fabriciov
Importe este pequeno projeto que fiz.
É um exemplo prático de como fazer… no onCreate ele tenta recupera o Bundle enviado pela activity anterior (null caso não existir) e ao clicar em um botão é pego o valor digitado em um EditText, somado com o valor recebido, guardado num bundle e enviado para a próxima activity (outra igual) que repete o fluxo.