Android Studio实现从第二个Activity向主Activity的ListView添加数据
实现通讯录联系人添加功能的完整方案
一、完善MainActivity代码
初始化ListView、联系人数据列表,通过ActivityResultLauncher接收MainActivity2返回的信息并更新列表:
public class MainActivity extends AppCompatActivity { private FloatingActionButton addContactButton; ListView listView; ArrayList<String> contacts; ArrayAdapter<String> adapter; private ActivityResultLauncher<Intent> addContactLauncher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化联系人列表与ListView适配器 contacts = new ArrayList<>(); listView = findViewById(R.id.contact_list); adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, contacts); listView.setAdapter(adapter); // 设置添加按钮点击事件 addContactButton = findViewById(R.id.add_contact); addContactButton.setOnClickListener(view -> openActivity2()); // 注册结果回调,接收返回的联系人数据 addContactLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == RESULT_OK && result.getData() != null) { String contactInfo = result.getData().getStringExtra("CONTACT_INFO"); if (contactInfo != null && !contactInfo.isEmpty()) { contacts.add(contactInfo); adapter.notifyDataSetChanged(); } } } ); } public void openActivity2() { Intent intent = new Intent(this, MainActivity2.class); addContactLauncher.launch(intent); } }
二、完善MainActivity2代码
获取表单输入内容,点击保存按钮后将数据返回给MainActivity:
public class MainActivity2 extends AppCompatActivity { private FloatingActionButton saveContact; private EditText etName, etPhone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); // 绑定输入框与保存按钮 etName = findViewById(R.id.et_name); etPhone = findViewById(R.id.et_phone); saveContact = findViewById(R.id.save_Contact_button); // 设置保存按钮点击事件 saveContact.setOnClickListener(view -> { String name = etName.getText().toString().trim(); String phone = etPhone.getText().toString().trim(); // 校验输入完整性 if (!name.isEmpty() && !phone.isEmpty()) { String contactInfo = name + " - " + phone; Intent resultIntent = new Intent(); resultIntent.putExtra("CONTACT_INFO", contactInfo); setResult(RESULT_OK, resultIntent); finish(); } else { Toast.makeText(this, "请输入完整的姓名和电话", Toast.LENGTH_SHORT).show(); } }); } }
三、布局文件要求
- activity_main.xml需包含:
- id为
contact_list的ListView - id为
add_contact的FloatingActionButton
- id为
- activity_main2.xml需包含:
- id为
et_name的EditText(用于输入姓名) - id为
et_phone的EditText(用于输入电话) - id为
save_Contact_button的FloatingActionButton
- id为
内容的提问来源于stack exchange,提问作者CisTricky
相关产品推荐
相关产品推荐

