【问题标题】:Call other activities in an activity?在一个活动中调用其他活动?
【发布时间】:2011-02-17 03:47:00
【问题描述】:

假设我有 2 个活动(ActivityOne 和 ActivityTwo)。我如何从 ActivityOne 调用 ActivityTwo?那么我将如何从 ActivityTwo 返回 ActivityOne?例如,我有一个包含主机电话上所有联系人的列表视图。当我点击一个联系人时,另一个活动会显示信息并允许编辑该联系人。然后我可以点击后退按钮,我会回到调用 ActivityTwo 之前 ActivityOne 所处的确切状态。我在想一个 Intent 对象,但我不确定。有人可以发布一些代码吗?

【问题讨论】:

    标签: java android android-activity


    【解决方案1】:

    在您的第一个活动 (AcitvityOne) 中,您可以调用

    Intent intent = new Intent(this, ActivityTwo.class);
    startActivityForResult(intent, CODE);
    

    然后你可以覆盖

    public void onActivityResult(int reqCode, int resultCode, Intent data) {
    

    接收此活动的结果

    【讨论】:

    • 如果不需要得到ActivityTwo的结果,可以直接使用startActivity(),跳过实现onActivityResult()
    【解决方案2】:

    在您的示例中,您似乎希望在活动一和活动二之间传递数据(即您要编辑的联系人的引用),因此您应该在活动一中使用具有您意图的 Bundle。

        Intent myIntent = new Intent(this, ActivityTwo.class);
        myIntent.putExtra("CONTACT", position);
        this.startActivity(myIntent);
    

    “CONTACT”是一个键,位置是一个值(位置之前已经定义过,它可以是你想要的任何值,例如一个整数。根据它的类型,你检索它的方式略有不同就是,注意下面活动二代码中的getInt()。

    在活动二中,在 onCreate() 中

    Bundle extras = getIntent().getExtras();
        if (extras != null) {
            contact = extras.getInt("CONTACT");
            /**Do what you want with the integer value you have retrieved**/
        }
    

    至于您的另一个问题,后退按钮从任务堆栈的顶部删除当前活动,因此,您返回到前一个活动,通常与您离开它的状态完全相同。

    但是,如果手机内存不足,Android 可能会终止某个进程或 Activity,因此理论上您之前的 Activity 可能不会以与您离开时完全相同的状态显示。如果您有任何重要数据,请在启动活动二之前将其保存。如果你只是想以相同的状态返回活动一以方便用户使用,那么依靠返回按钮就可以了。

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多