1

我有一个名为 A 的活动,其中有一个 ListView 和一个按钮。单击此按钮后,将显示列表视图,并且从该列表视图中,通过单击其项目,我可以移至活动 B。

现在的问题是,当我从 Activity B -> Activity A 回来时,我只看到 Button 而不是列表视图。

因为我正在调用活动 A 的意图..

代码

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        Intent i;

            i = new Intent(B.this, A.class);

        startActivity(i);
        finish();
        super.onBackPressed();
    }

在活动 B 中,我有上述实现,并且我也在 On Pause() 条件下使用了 finish()。

我想查看带有按钮的列表视图。我需要再次调用整个代码来显示 ListView 还是有其他方法可以解决这个问题?有没有办法保存以前的活动视图?

4

4 回答 4

0

onResume 在活动开始时或根据活动的生命周期从另一个活动返回时调用,最好将代码保留在 onResume 中,这将用数据重新填充您的列表视图。

因此,当您从 A 调用活动 B 时(在活动 A 中,在 onResume 方法中填充您的列表视图)并且当您按下返回时,它再次调用 onResume 并填充您的列表视图。

相反# 在活动 B 的 onBackPressed 中执行代码。

于 2013-10-15T05:39:20.217 回答
0

这是因为您Activity A在切换到Activity B. 如果您想要您的ListView原样,请不要完成Activity A然后尝试。如果您的数据仍然不可见,则在onResume()Activity A中再次绑定您的列表视图。

//removed finish().
@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    Intent i = new Intent(B.this, A.class);
    startActivity(i);
    super.onBackPressed();
}
于 2013-10-15T05:29:46.227 回答
0

您正在再次创建活动,因为您调用了 finish 方法,当您返回时它调用 onCreate 而它应该调用生命周期的 onResume 方法。

于 2013-10-15T05:27:43.297 回答
0

只需从您的代码中做一件事。rmove finish()

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    Intent i;

        i = new Intent(B.this, A.class);

    startActivity(i);
    super.onBackPressed();
}
于 2013-10-15T05:28:56.130 回答