O que é um bundle
aplicativo Android? Quando usá-lo?
O que é um bundle
aplicativo Android? Quando usá-lo?
Respostas:
Geralmente, os pacotes são usados para transmitir dados entre várias atividades do Android. Depende de você que tipo de valores você deseja passar, mas os pacotes configuráveis podem conter todos os tipos de valores e passá-los para a nova atividade.
Você pode usá-lo assim:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
Você pode obter os valores passados fazendo:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
Você pode encontrar mais informações em:
Passe dados entre atividades usando Bundle
e Intent
objetos.
Sua primeira criação de um Bundle
objeto
Bundle b = new Bundle();
Em seguida, associe os dados da cadeia armazenados na anystring
chave do pacote"myname"
b.putString("myname", anystring);
Agora, crie um Intent
objeto
Intent in = new Intent(getApplicationContext(), secondActivity.class);
Passe o objeto de pacote configurável b
para a intenção
in.putExtras(b);
e comece a segunda atividade
startActivity(in);
Na segunda atividade, temos que acessar os dados passados da primeira atividade
Intent in = getIntent();
Agora, você precisa obter os dados do pacote
Bundle b = in.getExtras();
Por fim, obtenha o valor dos dados da string associados à chave denominada "myname"
String s = b.getString("myname");
Eu tenho que acrescentar que os pacotes configuráveis são usados por atividades para passar dados para eles mesmos no futuro.
Quando a tela gira, ou quando outra atividade é iniciada, o método protected void onSaveInstanceState(Bundle outState)
é chamado e a atividade é destruída. Mais tarde, outra instância da atividade é criada e public void onCreate(Bundle savedInstanceState)
é chamada. Quando a primeira instância da atividade é criada, o pacote configurável é nulo; e se o pacote configurável não for nulo, a atividade continuará com alguns negócios iniciados por seu antecessor.
O Android salva o texto automaticamente nos campos de texto, mas não salva tudo e, às vezes, erros sutis aparecem.
O anti-padrão mais comum, no entanto, é assumir que onCreate()
apenas a inicialização. Está errado, porque também deve restaurar o estado.
Há uma opção para desativar esse comportamento de "recriar atividade em rotação", mas não evita erros relacionados à reinicialização, apenas os torna mais difíceis de mencionar.
Observe também que o único método cuja chamada é garantida quando a atividade será destruída é onPause()
. (Veja o gráfico do ciclo de vida da atividade nos documentos.)
A Bundle
é muito parecido com um Map
objeto Java que mapeia String
chaves para valores. É usado para passar informações entre atividades e outros componentes de aplicativos. Também é usado pela estrutura para capturar e restaurar informações de estado.
A razão pela qual o Android não usa Map
objetos antigos simples é que Map
é muito flexível; ele pode conter objetos (como, por exemplo, fluxos de E / S) que não podem ser serializados. A Bundle
API restringe os tipos de objetos que podem ser adicionados a um pacote configurável de forma que o conteúdo do pacote seja garantido como serializável. A estrutura do Android depende dessa propriedade.
Eu sugiro que você leia a documentação em Fundamentos de aplicativos . Isso explica, entre outras coisas, o que são pacotes e intenções e para que são usados.
Os pacotes podem ser usados para enviar dados arbitrários de uma atividade para outra por meio de Intenções. Quando você transmite uma Intenção, as Atividades interessadas (e outros BroadcastRecievers) serão notificadas disso. Uma intenção pode conter um Bundle para que você possa enviar dados extras junto com a Intenção.
Os pacotes são mapeamentos de valores-chave, portanto, de certa forma, são como um Hash, mas não estão estritamente limitados a um único mapeamento de objeto String / Foo. Observe que apenas certos tipos de dados são considerados "Parcelable" e são explicitamente explicitados na API do pacote.
Basta criar um pacote,
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
NA "this_is_the_next_class.class"
Você pode recuperar os itens como este.
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
Pacote: - Um mapeamento dos valores da String para vários tipos de Parcelable.
Bundle é geralmente usado para transmitir dados entre várias atividades do android.
quando chamamos onPause (), então onStop () e, em ordem inversa, onStop () para onPause ().
Os dados salvos que o sistema usa para restaurar o estado anterior são chamados de "estado da instância" e são uma coleção de pares de valores-chave armazenados em um objeto Bundle.
bundle é usado para compartilhar dados entre atividades e para salvar o estado do aplicativo no método oncreate (), para que o aplicativo saiba onde foi parado ... Espero que ajude :)
o uso de pacote envia dados de uma atividade para outra com a ajuda do objeto de intenção; O pacote retém os dados que podem ser de qualquer tipo.
Agora eu digo que como criar dados de passagem de pacote entre duas atividades.
Etapa 1: na primeira atividade
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
Etapa 2: na segunda atividade
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
Eu acho que isso é útil para você ...........
O pacote configurável não é apenas para transferir dados entre dois componentes diferentes, mas, o mais importante, é usado para restaurar os valores armazenados antes que a atividade seja destruída em nova atividade.
como o texto em um EditText
widget ou a posição de rolagem de a ListView
.
Primeira atividade:
String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());
Segunda atividade:
String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");