在我的android项目中,我有很多活动,其中一些已经扩展了其他东西,如地图活动或BroadcastReceiver。
如何创建可以从任何活动调用的函数,因为我不想在多个活动中重复任何代码。
感谢。
答案 0 :(得分:15)
如果我有一些有用的函数可以执行我想要从几个Activity调用的有用的任务,我会创建一个名为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();
课堂上还有比这更多的内容,但你明白了。
答案 1 :(得分:3)
您可以扩展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
答案 2 :(得分:0)
您可以创建一个静态方法或包含此方法的对象。
答案 3 :(得分:0)
您可以创建一个扩展Activity的类,然后确保您的实际活动是该活动的子类,而不是通常的内置活动。只需在此父活动中定义您的公共代码即可。
Shachar
答案 4 :(得分:0)
使用抽象修饰符创建一个新的Java类BaseActivity,并使用AppCompatActivity对其进行扩展。
在Java类BaseActivity下移动所有方法。
package com.example.madbox;
public abstract class BaseActivity extends AppCompatActivity {
protected void YourClass() {
}
}