【问题标题】:Set Intent to back key in TabActivity在 TabActivity 中将 Intent 设置为后退键
【发布时间】:2012-05-04 04:29:16
【问题描述】:

我有三个 Activity - A B 和 C,其中 B 是 Tab Activity。 Activity A 先启动,B 从 A 启动。我用这段代码启动 B 时完成 Activity A

public void onStop() {
   super.onStop();
   this.finish();
}

现在我想在 B 中按下返回键时启动 Activity C。

我尝试使用此代码覆盖返回键

@Override 
public void onBackPressed() { this.getParent().onBackPressed();
}

这无济于事,因为父 Activity 在启动子 Activity 时已完成。当我按下返回键时实际发生的是 Activity 退出到主屏幕。

我尝试覆盖后退键并为其设置 Intent

@Override
public void onBackPressed() {
    Intent backIntent = new Intent();
    backIntent.setClass(this, main.class);
    startActivity(backIntent);
}

这对我也没有帮助。 这个问题有什么可能的解决方案,当按下返回键时如何启动 Activity C?

【问题讨论】:

  • 试试.... backIntent.setClass(this, C.class);

标签: android android-intent android-tabhost tabactivity


【解决方案1】:

首先,您不应该在活动 A 停止时完成活动 A,这是完全错误的方法,而不是您必须在开始活动 B 时完成活动。

例如

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

现在您想在用户按下后退按钮时启动活动 C,因此请使用以下代码。

@Override
public void onBackPressed() {
    Intent backIntent = new Intent(this, C.class);
    startActivity(backIntent);
    super.onBackPressed();
}

【讨论】:

  • 感谢您的努力。我试过这个。问题仍然存在。活动 C 未启动
【解决方案2】:

你必须重写 onKeyDown

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if (keyCode == event.KEYCODE_BACK)
    {
        //Do your code here
    }
    return super.onKeyDown(keyCode, event);
}
}

这将在用户按下设备硬返回按钮时调用。

导航到下一个活动: StartActivity(new Intent(getApplicationContext(),main.class));

【讨论】:

  • 试过这个。不幸的是,问题仍然存在。
【解决方案3】:

覆盖下面的方法并导入事件.....

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
// TODO Auto-generated method stub

   if (keyCode == event.KEYCODE_BACK)
   {
      //Write your intent or other code here
   }
   return super.onKeyDown(keyCode, event);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多