14

私のAndroidプロジェクトには多くのアクティビティがあり、そのうちのいくつかはすでにマップアクティビティやBroadcastReceiverなどの他のものを拡張しています.

複数のアクティビティでコードを繰り返す必要がないため、どのアクティビティからでも呼び出すことができる関数を作成するにはどうすればよいですか。

ありがとう。

4

5 に答える 5

17

いくつかのアクティビティから呼び出したい、あまり役に立たないタスクを実行する便利な関数がある場合は、Util というクラスを作成してそこにパークします。staticオブジェクトを割り当てる必要がないように作成します。

私が書いたそのようなクラスの一部の例を次に示します。

public final class Util {
    public final static int KIBI = 1024;
    public final static int BYTE = 1;
    public final static int KIBIBYTE = KIBI * BYTE;

    /**
     * Private constructor to prevent instantiation
     */
    private Util() {}

    public static String getTimeStampNow() {
        Time time = new Time();
        time.setToNow();
        return time.format3339(false);
    }
}

これらの定数とメソッドを使用するには、オブジェクトではなくクラス名からアクセスできます。

int fileSize = 10 * Util.KIBIBYTE;
String timestamp = Util.getTimeStampNow();

クラスにはこれ以外にも多くのことがありますが、そのアイデアは理解できます。

于 2012-07-22T20:17:02.810 に答える
4

Application クラスを拡張してから、アクティビティで getApplication メソッドを呼び出し、それをアプリケーション クラスにキャストしてメソッドを呼び出すことができます。

これを行うには、android.app.Application を拡張するクラスを作成します。

package your.package.name.here;

import android.app.Application;

public class MyApplication extends Application {

    public void doSomething(){
        //Do something here
    }
}

次に、マニフェストでタグを見つけて、android:name="MyApplication" 属性を追加する必要があります。

アクティビティ クラスでは、次のようにして関数を呼び出すことができます。

((MyApplication)getApplication()).doSomething();

似たようなことをする方法は他にもありますが、これは方法の 1 つです。ドキュメントには、ほとんどの場合、静的シングルトンの方が適しているとさえ記載されています。アプリケーションのドキュメントは、http: //developer.android.com/reference/android/app/Application.htmlで入手できます。

于 2012-07-22T19:43:51.550 に答える
0

静的メソッドまたはこのメソッドを含むオブジェクトを作成できます。

于 2012-07-22T19:44:06.190 に答える
0

Activity を拡張するクラスを作成し、実際のアクティビティが通常の組み込みアクティビティではなく、そのアクティビティのサブクラスであることを確認できます。この親アクティビティで共通コードを定義するだけです。

シャチャー

于 2012-07-22T19:44:58.040 に答える