Как передать данные из одного занятия в следующее занятие
В настоящее время я занимаюсь разработкой приложения для Android и использую базу данных Firebase в реальном времени. Как передать данные пользователя из активности входа в навигационный заголовок домашней активности?
Что я должен добавить в активность входа, чтобы передать данные пользователя в заголовок навигации домашней активности?
Пользователю не нужно вводить имя пользователя для входа, но я хочу получить имя пользователя из базы данных в реальном времени и передать его также в заголовок навигации.
Login.java
firebaseAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
finish();
startActivity(new Intent(getApplicationContext(),Home.class));
}
else
{
Toast.makeText(LoginActivity.this,"Login failed. Kindly check your email and password.",Toast.LENGTH_SHORT);
}
}
}
Home.java
View headerView = navigationView.getHeaderView(0);
useremail = (TextView)headerView.findViewById(R.id.HVuseremail);
useremail.setText(Common.currentUser.getName());
username = (TextView)headerView.findViewById(R.id.HVusername);
username.setText(Common.currentUser.getName());
Я ожидаю, что мой заголовок навигации будет отображать useremail и имя пользователя на нем.
2 ответа
Вы можете передавать данные через Intents с помощью метода putExtra.
Intent intent = new Intent(getBaseContext(), Home.class);
intent.putExtra(<your data unique id in quotes>, <your data e.g username>);
startActivity(intent);
В вашем Home.class вы можете получить ваши данные, как показано ниже
String username = getIntent().getStringExtra(<your data unique id in quotes>,<default value incase the value is not correctly passed e.g null>);
Надеюсь, что это ответ на ваш вопрос.
Если у вас небольшой набор данных (например, Имя, Электронная почта), тогда вы можете использовать намеренный метод putExtra, предложенный @ Mushirih выше.
Но если у вас есть набор данных, вы можете использовать Android Bundle Intent, чтобы передать его в следующем действии, как показано ниже
LoginActivity class
Bundle bundle = new Bundle();
bundle.putString("Name",value);
bundle.putInt("Phone",6752525);
bundle.putBoolean("IsMale",false);
//..................like so on ............
Intent intent = new Intent(LoginActivity.this,SecondActivity.class);
intent.putExtras(bundle);
startActivity(intent);
В классе SecondActivity вы можете получить его так:
Bundle bundle = getIntent().getExtras();
String showtext = bundle.getString("Name"); //this for string
int phone = bundle.getInt("Phone"); // this is for phone
//.....like for other data...............