Variável e Activity

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.

Por favor, evite marcar tópicos com informações óbvias como [Dúvida] ou [Ajuda].

Use um Bundle.

[code]
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”;

//Activity1
Bundle bundle = new Bundle();
bundle.putInt(KEY_ACTIVITY_1, mRationChoose);

Intent intent = new Intent(getApplicationContext(), Activity2.class);
intent.putExtra(KEY_BUNDLE, bundle);
startActivity(intent); //chamar activity 2

//Activity2
Intent myIntent= getIntent();
Bundle bundle = intent.getBundleExtra(KEY_BUNDLE);
int mRationChoose = bundle.getIntExtra(KEY_ACTIVITY_2 , 0);
bundle.putInt(KEY_ACTIVITY_3, mRatioChooser2);

Intent intent = new Intent(getApplicationContext(), Activity3.class);
intent.putExtra(KEY_BUNDLE, bundle);
startActivity(intent); //chamar activity 3[/code]

[quote=fabriciov]Use um Bundle.

[code]
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”;

//Activity1
Bundle bundle = new Bundle();
bundle.putInt(KEY_ACTIVITY_1, mRationChoose);

Intent intent = new Intent(getApplicationContext(), Activity2.class);
intent.putExtra(KEY_BUNDLE, bundle);
startActivity(intent); //chamar activity 2

//Activity2
Intent myIntent= getIntent();
Bundle bundle = intent.getBundleExtra(KEY_BUNDLE);
int mRationChoose = bundle.getIntExtra(KEY_ACTIVITY_2 , 0);
bundle.putInt(KEY_ACTIVITY_3, mRatioChooser2);

Intent intent = new Intent(getApplicationContext(), Activity3.class);
intent.putExtra(KEY_BUNDLE, bundle);
startActivity(intent); //chamar activity 3[/code]

[/quote]

Fabrício, ai eu coloco um OnClick em cada botão Rádio para setar o valor nas “KEY_ACTIVITY” Né? Muitíssimo obrigado cara!

O KEY_ACTIVITY_1,2,3 são chaves (ou “endereço”) para recuperar o valor do bundle

o valor você coloca na variavel mRatioChooser como escrito aqui:

ai na outra activity você usa a mesma chave para recuperar esse valor

[quote=fabriciov]O KEY_ACTIVITY_1,2,3 são chaves (ou “endereço”) para recuperar o valor do bundle

o valor você coloca na variavel mRatioChooser como escrito aqui:

ai na outra activity você usa a mesma chave para recuperar esse valor

@Edit
Ta dando erro com a intent.putExtra(KEY_BUNDLE, bundle);
startActivity(intent);

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.

Qual erro ?

[code]
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”;
}

//Activity1
protected void onCreate(){
Bundle bundle = new Bundle();
bundle.putInt(Utils.KEY_ACTIVITY_1, mRationChoose); //adiciona valor ao bundle
Intent intent = new Intent(getApplicationContext(), Activity2.class);
intent.putExtra(Utils.KEY_BUNDLE, bundle);
startActivity(intent); //chamar activity 2
}

//Activity2
protected void onCreate(){
Intent myIntent= getIntent();
Bundle bundle = myIntent.getBundleExtra(Utils.KEY_BUNDLE);
int mRationChoose = bundle .getIntExtra(Utils.KEY_ACTIVITY_2 , 0);
bundle.putInt(KEY_ACTIVITY_3, mRatioChooser2); //adiciona outro valor para o bundle recebido na activity anterior
Intent intent = new Intent(getApplicationContext(), Activity3.class);
intent.putExtra(Utils.KEY_BUNDLE, bundle); //encaminha o bundle para a proxima activity
startActivity(intent); //chamar activity 3
}[/code]

[quote=fabriciov]Qual erro ?

[code]
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”;
}

//Activity1
protected void onCreate(){
Bundle bundle = new Bundle();
bundle.putInt(Utils.KEY_ACTIVITY_1, mRationChoose); //adiciona valor ao bundle
Intent intent = new Intent(getApplicationContext(), Activity2.class);
intent.putExtra(Utils.KEY_BUNDLE, bundle);
startActivity(intent); //chamar activity 2
}

//Activity2
protected void onCreate(){
Intent myIntent= getIntent();
Bundle bundle = myIntent.getBundleExtra(Utils.KEY_BUNDLE);
int mRationChoose = bundle .getIntExtra(Utils.KEY_ACTIVITY_2 , 0);
bundle.putInt(KEY_ACTIVITY_3, mRatioChooser2); //adiciona outro valor para o bundle recebido na activity anterior
Intent intent = new Intent(getApplicationContext(), Activity3.class);
intent.putExtra(Utils.KEY_BUNDLE, bundle); //encaminha o bundle para a proxima activity
startActivity(intent); //chamar activity 3
}[/code][/quote]

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.

[code]package bi01soft.mygbiz.binumeral.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Tabela1 extends Activity {

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

public void goButtonClicked(View v) {
	finish();

}
public void AbrirAtividade1(View v) {
Intent myIntent = new Intent(v.getContext(), Tabela2.class);
startActivity(myIntent);

    finish();

}

}[/code]

AbrirAtividade1 é do botão pra mudar pra minha activity 2 que se chama Tabela2.

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.

[code]package bi01soft.mygbiz.binumeral.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Tabela1 extends Activity {

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”;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabela1);

}

public void goButtonClicked(View v) {
	finish();

}
public void AbrirAtividade1(View v) {
Bundle bundle = new Bundle();
bundle.putInt(Utils.KEY_ACTIVITY_1, valorIntQueQuerEnviarParaTabela2);
Intent myIntent = new Intent(v.getContext(), Tabela2.class);
myIntent .putExtra(Utils.KEY_BUNDLE, bundle);
startActivity(myIntent);
finish();
}

}[/code]

aconselho estudar java básico primeiramente do que tentar aprender direto com Android.

[quote=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.

[code]package bi01soft.mygbiz.binumeral.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Tabela1 extends Activity {

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”;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabela1);

}

public void goButtonClicked(View v) {
	finish();

}
public void AbrirAtividade1(View v) {
Bundle bundle = new Bundle();
bundle.putInt(Utils.KEY_ACTIVITY_1, valorIntQueQuerEnviarParaTabela2);
Intent myIntent = new Intent(v.getContext(), Tabela2.class);
myIntent .putExtra(Utils.KEY_BUNDLE, bundle);
startActivity(myIntent);
finish();
}

}[/code]

aconselho estudar java básico primeiramente do que tentar aprender direto com Android.[/quote]

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.

Ps: Vou testar o novo código.

[quote]package bi01soft.mygbiz.binumeral.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Tabela2 extends Activity {

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

public void goButtonClicked(View v) {
	finish();

}
public void AbrirAtividade1(View v) {
Intent myIntent = new Intent(v.getContext(), Tabela3.class);
startActivity(myIntent);

    finish();
}

}
[/quote]

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?

[code]package bi01soft.mygbiz.binumeral.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Tabela2 extends Activity {
private Bundle mBundle = null;
private int mIntDaTabela2 = 0; //caso precise dele nessa activity

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

Intent myIntent= getIntent();
mBundle = myIntent.getBundleExtra(Utils.KEY_BUNDLE);
mIntDaTabela2 = bundle.getIntExtra(Utils.KEY_ACTIVITY_1 , 0);
}

public void goButtonClicked(View v) {
finish();
}

public void AbrirAtividade1(View v) {
Intent myIntent = new Intent(v.getContext(), Tabela3.class);
if(mBundle !=null){
mBundle.putInt(KEY_ACTIVITY_2, valorIntQueQuerEnviarParaTabela3);
myIntent.putExtra(Utils.KEY_BUNDLE, mBundle);
}else{
Bundle bundle = new Bundle();
bundle.putInt(KEY_ACTIVITY_2, valorIntQueQuerEnviarParaTabela3);
myIntent.putExtra(Utils.KEY_BUNDLE, bundle);
}

startActivity(myIntent);

finish();
}
}[/code]

[code]package bi01soft.mygbiz.binumeral.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Tabela1 extends Activity {

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”;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabela1);

}  
  
public void goButtonClicked(View v) {  
    finish();  

}
public void AtribuirValor(View v) {

}

private int EnviarValor = 1; 
public void AbrirAtividade1(View v) {  
    Bundle bundle = new Bundle();  
    bundle.putInt(Utils.KEY_ACTIVITY_1, EnviarValor);  
    Intent myIntent = new Intent(v.getContext(), Tabela2.class);    
    myIntent .putExtra(Utils.KEY_BUNDLE, bundle);  
    startActivity(myIntent);    
    finish();  

}

} [/code] 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?

[code]package bi01soft.mygbiz.binumeral.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Tabela2 extends Activity {
private Bundle mBundle = null;
private int EnviarValor2 = 2;//caso precise dele nessa activity

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

	Intent myIntent= getIntent();   
	mBundle  = myIntent.getBundleExtra(Utils.KEY_BUNDLE);   
	EnviarValor2  = bundle.getIntExtra(Utils.KEY_ACTIVITY_1 , 0);  
}   

public void goButtonClicked(View v) {   
	finish();
}   

int ValorParcial = EnviarValor + EnviarValor2;

public void AbrirAtividade1(View v) {   
	Intent myIntent = new Intent(v.getContext(), Tabela3.class);   
	if(mBundle !=null){   
		mBundle.putInt(KEY_ACTIVITY_2, ValorParcial);  
		myIntent.putExtra(Utils.KEY_BUNDLE, mBundle);  
	}else{  
		Bundle bundle = new Bundle();  
		bundle.putInt(KEY_ACTIVITY_2, ValorParcial);  
		myIntent.putExtra(Utils.KEY_BUNDLE, bundle);  
	}  

	startActivity(myIntent);   

	finish();   
}   

} [/code]

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?

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.

[quote=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.[/quote]

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.

[code]package bi01soft.mygbiz.binumeral.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class Tabela2 extends Activity {
private Bundle mBundle = null;
private int EnviarValor2 = 2;//caso precise dele nessa activity

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

	Intent myIntent= getIntent();   
	mBundle  = myIntent.getBundleExtra(Utils.KEY_BUNDLE);   
	EnviarValor2  = bundle.getIntExtra(Utils.KEY_ACTIVITY_1 , 0);  
}   

public void goButtonClicked(View v) {   
	finish();
}   

int ValorParcial = "EnviarValor" + "EnviarValor2";

public void AbrirAtividade1(View v) {   
	Intent myIntent = new Intent(v.getContext(), Tabela3.class);   
	if(mBundle !=null){   
		mBundle.putInt(KEY_ACTIVITY_2, ValorParcial);  
		myIntent.putExtra(Utils.KEY_BUNDLE, mBundle);  
	}else{  
		Bundle bundle = new Bundle();  
		bundle.putInt(KEY_ACTIVITY_2, ValorParcial);  
		myIntent.putExtra(Utils.KEY_BUNDLE, bundle);  
	}  

	startActivity(myIntent);   

	finish();   
}   

} [/code]

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.

https://mega.co.nz/#!OohXyayJ!YIkS808fcGYumyXZeVXMdXDaZK0NH1c7G-mtT2dXVe8

Nesse projeto é utilizado apenas uma Chave para armazenar um inteiro (soma das anteriores), no seu caso só vai ter que criar uma chave para cada.