3

我有这个代码用于覆盖back按钮并使其像home按钮一样工作:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

它运行良好。我的问题是,如果有一个位置,我可以把它放在所有活动中。现在,我在每个活动中都复制了这种方法。

4

4 回答 4

3

创建您自己的 BaseActivity 并使用 Activity 扩展它,然后覆盖那里。现在,在您的整个应用程序中,使用该 BaseActivity 而不是使用 Activity。

像这样的东西:

public abstract class BaseActivity extends Activity 
{
    final protected void onCreate(Bundle savedInstanceState)
   {
    super.onCreate(savedInstanceState);
    onCreate_Impl(savedInstanceState);
   }

   abstract protected void onCreate_Impl(Bundle savedInstanceState);
}    

您必须使用 onCreate_Impl 代替 onCreate。

于 2013-02-21T14:22:00.967 回答
3

创建一个基本活动,在那里处理密钥并从基本活动继承所有其他活动。

于 2013-02-21T14:19:26.603 回答
3

使用此代码创建一个 BaseActivity(扩展 Activity),然后让您的所有活动都扩展 BaseActivity,而不是 Activity。

于 2013-02-21T14:19:54.250 回答
1

您可以创建一些抽象类,它扩展了 Activity 并实现了此方法。然后在您的应用程序的每个活动中对其进行子类化。一次只能扩展一个类,但在大多数情况下,最好有一些抽象的 Activity 类,其中包含一组应用程序活动的一些常用功能。

于 2013-02-21T16:17:37.373 回答