私のAndroidプロジェクトには多くのアクティビティがあり、そのうちのいくつかはすでにマップアクティビティやBroadcastReceiverなどの他のものを拡張しています.
複数のアクティビティでコードを繰り返す必要がないため、どのアクティビティからでも呼び出すことができる関数を作成するにはどうすればよいですか。
ありがとう。
私のAndroidプロジェクトには多くのアクティビティがあり、そのうちのいくつかはすでにマップアクティビティやBroadcastReceiverなどの他のものを拡張しています.
複数のアクティビティでコードを繰り返す必要がないため、どのアクティビティからでも呼び出すことができる関数を作成するにはどうすればよいですか。
ありがとう。
いくつかのアクティビティから呼び出したい、あまり役に立たないタスクを実行する便利な関数がある場合は、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();
クラスにはこれ以外にも多くのことがありますが、そのアイデアは理解できます。
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で入手できます。
静的メソッドまたはこのメソッドを含むオブジェクトを作成できます。
Activity を拡張するクラスを作成し、実際のアクティビティが通常の組み込みアクティビティではなく、そのアクティビティのサブクラスであることを確認できます。この親アクティビティで共通コードを定義するだけです。
シャチャー