2012-07-22 9 views
9

私のアンドロイドプロジェクトでは、私は多くの活動をしており、そのうちのいくつかはすでにマップ活動やBroadcastReceiverのような他のものを拡張しています。android - 再利用可能な関数を作成する方法は?

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

ありがとうございました。

答えて

12

私はいくつかの活動から呼び出したい少し有用なタスクを実行する便利な機能を持っている場合は

は、私が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(); 

これ以上のクラスはありますが、あなたはそのアイディアを得ています。

3

Applicationクラスを拡張し、アクティビティでgetApplicationメソッドを呼び出して、そのメソッドを呼び出すためにアプリケーションクラスにキャストできます。あなたは、タグを見つけて、アンドロイドを追加する必要があります

package your.package.name.here; 

import android.app.Application; 

public class MyApplication extends Application { 

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

をマニフェストで:

あなたはandroid.app.Applicationを拡張するクラスを作成することによって、これを行うの名前=「MyApplicationという」属性を。

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

が同様の何かをやって、他の方法がありますが、これは次のいずれかの方法である:あなたの活動のクラスで

は、あなたがして実行して関数を呼び出すことができます。ドキュメントでは、ほとんどの場合、静的なシングルトンがより良い選択であると記載されています。アプリケーションドキュメントは、次のURLから入手できます。http://developer.android.com/reference/android/app/Application.html

+0

これの例を私に見せてもらえますか?これはどういう仕組みか分かりません – omega

+0

上記のコードを新しい.javaファイルに入れますか? "android:name =" MyApplication ""の場合、マニフェストにどのように追加しますか? – omega

+1

Eclipseを使用している場合は、「クラスの追加」メニューポイントを使用してアプリケーションクラスを作成してください。 マニフェストファイルを開き、次のような行を探します。 Dimse

0

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

0

アクティビティを拡張するクラスを作成し、実際のアクティビティが通常のビルトインアクティビティのサブクラスであることを確認できます。この親アクティビティーで共通コードを定義するだけです。 Shachar

関連する問題