Pegar valores de EditText em Abas diferentes

34 respostas
F

Boa tarde,

Tenho duas abas com dois EditText, uma em cada Aba. Como que faço para pegar os valores dos EditText ao clicar num botão e mostrar na tela como um Toast.

34 Respostas

Artur_Bernardo

Duas abas ou duas telas?
Está usando que componente para criar as abas?

F

Duas abas mesmo.

F

Alguém pra ajudar?

F

Artur Bernardo, me ajuda, to usando o TabHost. Mas tem como criar via xml?

F

Aba A, EditTextNome.
Aba B EditTextSobrenome

Mostrar num toast valores do EditText da aba A + EditTextSobrenome da aba B

F

Artur, me ajuda, ja tenho as abas só falta pegar os valores.

Artur_Bernardo

TabHost? Nem conheço, nunca usei.
Tu tenta pegar o valor da aba “desaparecida”, e vem null? Ou da erro do aplicativo?
Se for isso, ela deve estar sendo destruída.
Quando tu volta, o valor do campo sumiu?

Tu pode enviar para a “sessão” o valor do editText, quando a aba for destruída.

algo mais ou menos assim

public void onStop() { valorDaAbaQueSeFoi = (pega valor do editText); this.getIntent().putExtra( "valorDaAbaQueSeFoi", valorDaAbaQueSeFoi); }

depois tu pega os dados na outra aba.

Bundle sessao = this.getIntent().getExtras();
	    	syncEnd = (Boolean) sessao.get( "valorDaAbaQueSeFoi" );
L

fbrigatt, tranquilo? Conseguiu resolver?

Estou com um problema parecido, ao clicar na aba2 preciso pegar um informação no Edit na aba1 e carregar para aba2.

Alguem pode me ajudar?

Artur_Bernardo

leandrooooo:
fbrigatt, tranquilo? Conseguiu resolver?

Estou com um problema parecido, ao clicar na aba2 preciso pegar um informação no Edit na aba1 e carregar para aba2.

Alguem pode me ajudar?

Quando tu volta, a informação continua lá? Ou ela sumiu?
Se ela continua lá, um “findViewById” resolve.
Se ela some, tem de usar o ciclo de vida da activity a teu favor.

Quando sair dela, ela pode ser pausada, destruída ou “stopada”.
A solução é sobrescrever algum destes métodos e ali fazer tua lógica.

F

Eu só coloquei os edits la, ainda não vi isso. Mas como que recupero esses valores no botão da aba 3? Eu to rodando aqui pra ver o que perguntou.

F

Acabei de testar. Quando digito e mudo de aba e volto, ta la o que escrevi.

Artur_Bernardo

e o findViewById retorna o que?
Se está achando o View, é só pegar o valor dela.

F

não sei onde colocar esse código qdo usa abas. Tenho 03 e o botão ta na terceira aba. Vc tem skype ou talk?

meu skype é: [email removido]
o gtalk é: [email removido]

F

Sei que tem que usar o edtNome.getText(), mas não estou sabendo onde colocar isso.

F

edtNome está na aba 1. Esse código é da aba 3. Está dando erro de JavaNullPointerException. Sei que isso é alguma coisa que não foi inicializada. O erro ocorre no click do botão.

Obs.: Estou TENTANDO fazer. Peço ajuda nesse erro, por favor. Fico no aguardo.

package com.example.androidtablayout;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class VideosActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.videos_layout);
        
       final EditText Nome = (EditText) findViewById(R.id.edtNome);
        Button Salvar = (Button) findViewById(R.id.btnSalvar);
        
        Salvar.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String nome = Nome.getText().toString();			
				Toast.makeText(getBaseContext(), nome, Toast.LENGTH_LONG).show();
				
			}
		});
        
        
        
    }
}
V

Não é uma maneira elegante, declara os componentes como variáveis estáticas.

F

Então como seria?

onde coloco? To tentando aqui e nada.

assim:

public class VideosActivity extends Activity {
  public Static final String nome = null;
public void onCreate(Bundle savedInstanceState) {
.....restante do código
Artur_Bernardo

Se tu troca a variavel Nome por algum texto como “funciona?”, o Toast aparece?

F

Estou testando. Ja posto a resposta.

Não, da erro também.

F

Se comento as linhas:

package com.example.androidtablayout;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class VideosActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.videos_layout);
        
   //    final EditText Nome = (EditText) findViewById(R.id.edtNome);
        Button Salvar = (Button) findViewById(R.id.btnSalvar);
        
        Salvar.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
	//			String nome = Nome.getText().toString();			
				Toast.makeText(getBaseContext(), "nome", Toast.LENGTH_LONG).show();
			}
		});
    }
}

Mostra o toast.

F

Ninguém?

A

Olá
Veja se esse post ajuda: http://agorandroid.blogspot.com.br/2013/01/dica-como-chamar-metodos-em-activities.html

F

A H Gusukuma,

Não entendi direito isso. Não estou sabendo onde colocar esse método. Tem como me ajudar? Tem skype ou gtalk?

F

A minha classe principal é essa:

package com.example.androidtablayout;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class AndroidTabLayoutActivity extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        TabHost tabHost = getTabHost();
        
        // Tab for Photos
        TabSpec photospec = tabHost.newTabSpec("Photos");
        photospec.setIndicator("Photos", getResources().getDrawable(R.drawable.icon_photos_tab));
        Intent photosIntent = new Intent(this, PhotosActivity.class);
        photospec.setContent(photosIntent);
        
        // Tab for Songs
        TabSpec songspec = tabHost.newTabSpec("Songs");
        // setting Title and Icon for the Tab
        songspec.setIndicator("Songs", getResources().getDrawable(R.drawable.icon_songs_tab));
        Intent songsIntent = new Intent(this, SongsActivity.class);
        songspec.setContent(songsIntent);
        
        // Tab for Videos
        TabSpec videospec = tabHost.newTabSpec("Videos");
        videospec.setIndicator("Videos", getResources().getDrawable(R.drawable.icon_videos_tab));
        Intent videosIntent = new Intent(this, VideosActivity.class);
        videospec.setContent(videosIntent);
        
        // Adding all TabSpec to TabHost
        tabHost.addTab(photospec); // Adding photos tab
        tabHost.addTab(songspec); // Adding songs tab
        tabHost.addTab(videospec); // Adding videos tab
    }
}

Essa aqui é uma aba 3 com um botão:

package com.example.androidtablayout;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class VideosActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.videos_layout);
        
       final EditText Nome = (EditText) findViewById(R.id.edtNome);
        Button Salvar = (Button) findViewById(R.id.btnSalvar);
        
        Salvar.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String nome = Nome.getText().toString();			
				Toast.makeText(getBaseContext(), nome, Toast.LENGTH_LONG).show();
				
			}
		});
        
        
        
    }
}

Eu queria pegar o valor do edtNome que ta na aba 1 e edtSobrenome aba 2 e mostrar na aba 3

A

A ideia do post é manter os dados a serem compartilhados num singleton, e, quando for necessário, usar os dados salvos no singleton.

F

Tem como me ajudar a fazer isso? Tem skype? O meu é [email removido]

A

Desculpe-me, mas só tenho disponibilidade p/ forum.

F

Mas é por aqui mesmo. O código ta postado ai. Só dizer o que fazer.

A

No post que citei mostra exatamente isso.

F

Mas como usa, essa é a pergunta.

F

Alguém pode me ajudar?

F

Pessoal,

Eu consegui fazer mas não estou entendendo uma coisa. No final do email explico.

Criei essa classe conform blog:

public class MySingleton {

      private int myInt;
      private String myString;

      private static MySingleton instance ;

      private MySingleton() {
      myInt = 0;
      myString = "";
      }

      public static MySingleton getInstance () {
      if ( MySingleton.instance == null ) {
      MySingleton.instance = new MySingleton();
      }
      return MySingleton.instance;
      }

      public int getMyInt() {
      return myInt;
      }

      public void setMyInt(int i) {
      this.myInt = i;
      }
      public String getMyString() {
      return myString;
      }

      public void setMyString(String s) {
      this.myString = s;
      }

      }

Chamo ela desse jeito, uso isso na 1ª aba:

MySingleton mDados = MySingleton.getInstance ();
mDados.setMyInt(100);
mDados.setMyString("Testando classe");

E uso desse jeito na 3ª:

Salvar.setOnClickListener(new View.OnClickListener() {
                  
                  public void onClick(View v) {
                    
                        MySingleton mDados = MySingleton.getInstance ();
                        int i = mDados.getMyInt();
                        String s = mDados.getMyString();
                    Toast.makeText(getBaseContext(), s, Toast.LENGTH_LONG).show();
                        
                  }
            });

Desse jeito se clico no botão da 3ª aba mostra o texto no toast: Testando classe?

Se mudo para esse jeito na 1ª não mostra nada no Toast:

String s = nome.getText().toString();
mDados.setMyString(s);

Pergunta: O que está errado?

Obs.: PESQUISEI, ENCONTREI E ADAPTEI, só não está funcionando direito. Poderiam me ajudar agora, por favor? Pode ser dúvida de outras pessoas.

A

Posta como ficou o código da primeira aba, só esse trecho não dá para avaliar

F

Photos.java (1 aba)

package com.example.androidtablayout;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class PhotosActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.photos_layout);
        
        final EditText nome = (EditText) findViewById(R.id.edtNome);
        Button Salvar = (Button) findViewById(R.id.btnSalvar);

        MySingleton mDados = MySingleton.getInstance ();
        mDados.setMyInt(100);
        mDados.setMyString("Testando classe");

        
        
        
//        String s = nome.getText().toString();
//        mDados.setMyString(s);
        
        
        Salvar.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				String valor = nome.getText().toString();			
				Toast.makeText(getBaseContext(), valor, Toast.LENGTH_LONG).show();
			}
		});
        
        
        
    }
}
Criado 6 de agosto de 2013
Ultima resposta 8 de ago. de 2013
Respostas 34
Participantes 5