Android父activity调用子activity

在Android开发中,Activity是应用程序的一个重要组件,用于展示用户界面和处理用户交互。在某些情况下,一个Activity可能需要调用另一个Activity来完成特定的任务。本文将介绍如何在Android中实现父Activity调用子Activity的功能,并提供代码示例。

为什么需要父Activity调用子Activity

在开发Android应用程序时,通常会遇到一种情况,即一个Activity需要调用另一个Activity来完成某个任务。例如,用户点击按钮时需要跳转到另一个界面进行设置,或者从一个界面获取用户输入后返回结果给父界面等。这时就需要通过Intent来实现Activity之间的通信。

实现父Activity调用子Activity的步骤

  1. 创建子Activity

首先,在Android项目中创建子Activity。在AndroidManifest.xml文件中注册子Activity,并在布局文件中添加子Activity的界面元素。

  1. 定义Intent

在父Activity中定义Intent对象,用于启动子Activity。Intent是Android应用程序中的消息传递对象,用于在不同组件之间传递数据。

Intent intent = new Intent(ParentActivity.this, ChildActivity.class);
  1. 启动子Activity

使用Intent对象启动子Activity。可以使用startActivityForResult方法启动子Activity,并在子Activity完成后返回结果给父Activity。

startActivityForResult(intent, REQUEST_CODE);
  1. 处理子Activity返回结果

在父Activity中重写onActivityResult方法,用于处理子Activity返回的结果。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        // 处理子Activity返回的数据
    }
}

示例代码

父Activity

public class ParentActivity extends AppCompatActivity {
    private static final int REQUEST_CODE = 1;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_parent);
        
        Button btnOpenChildActivity = findViewById(R.id.btn_open_child_activity);
        btnOpenChildActivity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ParentActivity.this, ChildActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
            // 处理子Activity返回的数据
        }
    }
}

子Activity

public class ChildActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_child);
        
        Button btnFinish = findViewById(R.id.btn_finish);
        btnFinish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent resultIntent = new Intent();
                setResult(RESULT_OK, resultIntent);
                finish();
            }
        });
    }
}

状态图

使用Mermaid语法定义父Activity调用子Activity的状态图如下:

stateDiagram
    ParentActivity --> ChildActivity: 启动子Activity
    ChildActivity --> ParentActivity: 返回结果

结论

通过上述步骤和示例代码,我们可以实现父Activity调用子Activity的功能,并处理子Activity返回的结果。在实际开发中,可以根据具体需求对代码进行修改和扩展,以满足不同的功能要求。希望本文能够帮助你理解Android中父Activity调用子Activity的实现方式。