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);
}

それは完全に機能しています。私の質問は、すべての活動で機能するようにこれを配置できる場所が1つあるかどうかです。現在、このメソッドをすべてのアクティビティで複製しています。

4

4 に答える 4

3

基本アクティビティを作成し、そこでキーを処理して、基本アクティビティから他のすべてのアクティビティを継承します。

于 2013-02-21T14:19:26.603 に答える
3

このコードを使用してBaseActivityを作成(アクティビティを拡張)してから、すべてのアクティビティがActivityではなくBaseActivityを拡張できるようにします。

于 2013-02-21T14:19:54.250 に答える
3

独自のBaseActivityを作成し、Activityで拡張して、そこにオーバーライドします。これで、アプリ全体で、代わりにActivityを使用してそのBaseActivityを使用します。

このようなもの:

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の代わりにonCreate_Implを使用する必要があります。

于 2013-02-21T14:22:00.967 に答える
1

Activityを拡張し、このメソッドを実装する抽象クラスを作成できます。次に、アプリのすべてのアクティビティでサブクラス化します。一度に拡張できるクラスは1つだけですが、ほとんどの場合、これは、一連のアプリケーションアクティビティのいくつかの共通関数を含む抽象的なActivityクラスを用意することをお勧めします。

于 2013-02-21T16:17:37.373 に答える