Почему мой объект равен нулю, когда я хочу поделиться им между двумя видами деятельностиAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой объект равен нулю, когда я хочу поделиться им между двумя видами деятельности

Сообщение Anonymous »

Моя задача состоит в том, чтобы нажать кнопку «Добавить» в 1_activity, которая отправляет меня на 2_activity, где мне нужно подвести итоги мои данные в поля, и нажать кнопку «Сохранить», которая сохраняет данные и отправляет меня обратно в 1_Activity, где я нажимаю на другую кнопку «См.» И она отправляет меня на 2_acitivty с заполненными данными < /p>
1_Activity < /p>
`public class MainActivity extends AppCompatActivity { ActivityMainBinding binding; public static final int CODE = 0; public static final String USER = "USER"; Intent i; public Form user; public String name;
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(data != null){
if(requestCode == CODE && resultCode == RESULT_OK){
binding.btnSee.setVisibility(View.VISIBLE); //here im changing the button
binding.btnAdd.setVisibility(View.INVISIBLE);
Bundle args = getIntent().getExtras();
if(args != null){
user = (Form) args.getSerializable(Form.class.getSimpleName());
assert user != null;
String name = user.getName(); // add data,given from the 2_activity
String surname = user.getSurname();
String address = user.getAddress();
String site = user.getSite();
int phone = user.getPhone();
user = new Form(name,surname,phone,site,address);
}
}
}
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.btnSee.setVisibility(View.INVISIBLE);
binding.btnAdd.setOnClickListener(v -> {
i = new Intent(getApplicationContext(), UserForm.class);
startActivityForResult(i,CODE);
});

binding.btnSee.setOnClickListener(view -> {
i = new Intent(getApplicationContext(),UserForm.class);
i.putExtra(Form.class.getSimpleName(),user); //giving filled data back to 2_activity
startActivity(i);
});
}
}`
< /code>
2_activity < /p>
`

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); binding = ActivityUserFormBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot());

Bundle args = getIntent().getExtras();
if(args != null){
user = (Form) args.getSerializable(Form.class.getSimpleName());
}

if(user != null){ *//this condition is being skipped, this is my problem*
binding.name.setText(user.getName());
binding.surname.setText(user.getSurname());
binding.phone.setText(String.valueOf(user.getPhone()));
binding.site.setText(user.getSite());
binding.address.setText(user.getAddress());
}

binding.btnSubmit.setOnClickListener(v -> {
String name = binding.name.getText().toString(); //filling entered data
String surname = binding.surname.getText().toString();
String address = binding.address.getText().toString();
String site = binding.site.getText().toString();
int phone = Integer.parseInt(binding.phone.getText().toString());

user = new Form(name,surname,phone,site,address);
intent = new Intent(getApplicationContext(),MainActivity.class); intent.putExtra(Form.class.getSimpleName(), user); //sending my data to 1_activity //intent.putExtra(INFO,user); setResult(RESULT_OK,intent); finish(); }); } }`
< /code>
my form class < /p>
public class Form implements Serializable { String name, surname, site, address; int phone;
public Form(String name, String surname,int phone, String site, String address){
this.name = name;
this.surname = surname;
this.site = site;
this.address = address;
this.phone = phone;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSurname() {
return surname;
}

public void setSurname(String surname) {
this.surname = surname;
}

public String getSite() {
return site;
}

public void setSite(String site) {
this.site = site;
}

public void setAddress(String address) {
this.address = address;
}

public String getAddress() {
return address;
}

public int getPhone() {
return phone;
}

public void setPhone(int phone) {
this.phone = phone;
}`


Подробнее здесь: https://stackoverflow.com/questions/794 ... activities
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»