14

在我的 android 项目中,我有很多活动,其中一些已经扩展了其他东西,如地图活动或广播接收器。

如何创建一个可以从任何活动调用的函数,因为我不想在多个活动中重复任何代码。

谢谢。

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

还有其他方法可以做类似的事情,但这是其中一种方法。文档甚至指出,在大多数情况下,静态单例是更好的选择。应用程序文档位于: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 回答
0
  1. 使用抽象修饰符创建一个新的 Java 类 BaseActivity 并使用 AppCompatActivity 对其进行扩展。

  2. 将所有方法移到 Java 类 BaseActivity 下。

package com.example.madbox;

public abstract class BaseActivity extends AppCompatActivity {

    protected void YourClass() {

    }
}

  1. 使用 BaseActivity 而不是 AppCompatActivity 扩展您的活动。
于 2020-02-22T08:02:40.107 回答