是否可以在堆栈顶部已经存在的活动之下开始一项活动

时间:2019-06-27 12:52:33

标签: android android-activity back-stack

我有一个活动A,我想启动活动B以从服务器上加载它的数据,并在检索所有数据后,我想完成活动A,以使活动B出现在我的堆栈顶部并显示出来

我无法解决这个问题,我不知道该如何实现

4 个答案:

答案 0 :(得分:0)

您可以将数据加载到活动A中,并在完成加载后开始活动B并在活动之间传递数据,您可以查看如何here

答案 1 :(得分:0)

在活动A中这样做-

    // 1. create an intent pass class name or intnet action name 
    Intent intent = new Intent(this,AnotherActivity.class);

    // 2. put X, Y in intent
    intent.putExtra("x",  etX.getText().toString());
    intent.putExtra("y",  etY.getText().toString());

    // 3. start the activity
    startActivityForResult(intent, 1);

在活动B中这样做-

public class ActivityB extends Activity implements OnClickListener {

    TextView tvSum;
    Button btnSendResult;
    int result;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);

// 1. get passed intent 
    Intent intent = getIntent();

    // 2. get x & y from intent
    int x = Integer.parseInt(intent.getStringExtra("x"));
    int y = Integer.parseInt(intent.getStringExtra("y"));
    result = x + y;

    btnSendResult = (Button) findViewById(R.id.btnSendResult);
    btnSendResult.setOnClickListener(this);
}

然后在活动B中的onCreate之外-

@Override
    public void onClick(View view) {

         Intent returnIntent = new Intent();
         returnIntent.putExtra("result",result);
         setResult(RESULT_OK,returnIntent);     
         finish();
    }

答案 2 :(得分:0)

在活动A中使用广播接收器,并在我们开始活动B时开始收听广播。将数据加载到活动B中之后,发送广播。收到广播后,finish()活动A。

答案 3 :(得分:0)

一旦数据加载完毕,您就可以使用活动{中的job scheduler加载数据,并启动活动B并传递数据。