在我的 android 项目中,我有很多活动,其中一些已经扩展了其他东西,如地图活动或广播接收器。
如何创建一个可以从任何活动调用的函数,因为我不想在多个活动中重复任何代码。
谢谢。
在我的 android 项目中,我有很多活动,其中一些已经扩展了其他东西,如地图活动或广播接收器。
如何创建一个可以从任何活动调用的函数,因为我不想在多个活动中重复任何代码。
谢谢。
如果我有有用的函数来执行我想从几个活动中调用的小有用任务,我会创建一个名为 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();
还有其他方法可以做类似的事情,但这是其中一种方法。文档甚至指出,在大多数情况下,静态单例是更好的选择。应用程序文档位于:http: //developer.android.com/reference/android/app/Application.html
您可以创建一个静态方法或包含此方法的对象。
您可以创建一个扩展 Activity 的类,然后确保您的真实活动是该活动的子类,而不是通常的内置活动。只需在此父活动中定义您的公共代码。
沙查尔
使用抽象修饰符创建一个新的 Java 类 BaseActivity 并使用 AppCompatActivity 对其进行扩展。
将所有方法移到 Java 类 BaseActivity 下。
package com.example.madbox;
public abstract class BaseActivity extends AppCompatActivity {
protected void YourClass() {
}
}