Variaveis dentro de Activitys

8 respostas
D

Boa noite,
Sou novo no android e no java também, mas estou tentando desenvolver uma aplicação no android e estou com a seguinte duvida:

Tenho uma class onde declaro uma variavel public e statica ( public static int total = 0; ) por exemplo.

Gostaria de saber como faço para manipular essa variavel nas activitys de minha aplicação?
ex: quando um evento acontecer atribuir um numero inteiro a variavel. E depois de alguns eventos, apresentar o estado da variavel em um TextView.

As soluções que tentei fazer sempre me da “false” quando dou o TextView para ver o resultado.

8 Respostas

R

Coloca o codigo da activity que você criou que fica mais fácil te ajudar.

D
public class Timer extends Activity  {

	public static int total = 0;
       

       @Override
	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.contagem);

//	restante do codigo

Essa activity é onde declarei a variavel statica.

public class PrimeiraActivity extends Activity {

	
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tela1);
		
		
		// evento
				
			
			
			total = + 1;

essa activity é onde adiciono valores a variavel statica da class timer. Ha outras activityc que tambem soma valores a essa variavel.

public class ResultadoActivity extends Activity {

	
	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.estatistica);
		
		
		total  = (TextView) findViewById(R.id.valor_total);

Aqui deveria estar o valor atualizado da variavel statica “total”, mas sempre fica “false”

Espero que nao tenha ficado confuso o codigo.

R

Olha se a sua activity Time for destruida ,automaticamente você perde os valores que estão armazenados dentro da sua variavel estatica, Então é melhor vc definir esssa variavel dentro de outra classe estatica que não seja uma activity.

D

Tem razao. Pode ser por causa do ciclo de vida da activity. Vou fazer uma classe sem estender da acticity.
Agora a duvida fica em como passar parametros entre as activitys.
Acho que tem haver com o putExtra ou Bundle. Mas ainda nao entendi bem o funcionamento dessa manipulaçao.

R

você vai criar uma nova intent e vai passar o valor que vc quer pra ela:

E na outra activity:

Bundle extras = getIntent().getExtras();
int total = extras.getInt("total");
D

Vamos ver se entendi:

Na minha class Timer que nao estendi mas de Acrivity eu crio uma intent que chamamos de total.

intent.putExtra("total", total);

E nas minhas activitys vao acontecendo os eventos e vao adicionando +1 na minha variavel.

//acontece o evento dentro da activity1
Bundle extras = getIntent().getExtras();  
int total = extras.getInt("+1");

Depois em outra activity acontece outro evento:

//acontece o evento dentro da activity2
Bundle extras = getIntent().getExtras();  
int total = extras.getInt("+1");

Nesse caso, a minha variavel total se apresentada teria o numero 2?

R

Usando intent não precisa criar uma outra classe para armazenar o valor do total, em cada activty que vc for somar valor ao total vc vai criar uma nova intent, onde vc vai obter o valor da intent anterior e vai somar ao atual e vai passar para nova intent que vc criar.

D

Acho que estou começando a entender.
Mas so vou poder mecher no meu codigo a noite.

Essa mesma logica serve para apresentar um mesmo tempo decrescente em todas as acrivitys?
Tenho uma classe q conta 30 segundos descrecente, mas nao é visivel ao usuario. Se eu quiser fazer o usuario veja esse tempo decrescer eu tenho que criar uma variavel e chamar essa variavel atraves da intent em todas as activitys?

Criado 25 de março de 2013
Ultima resposta 25 de mar. de 2013
Respostas 8
Participantes 2