Android扩展了应用程序,并为其创建了一个实例

Android扩展了应用程序,并为其创建了一个实例,android,extend,Android,Extend,我尝试了以下代码:- public class LocationApplication extends Application { public LocationInfo locationInfo; public int myInt; @Override public void onCreate() { super.onCreate(); } } public int getInt(){ someMethod(context); return myInt;

我尝试了以下代码:-

public class LocationApplication extends Application {

public LocationInfo locationInfo;
public int myInt;
@Override
public void onCreate() {
    super.onCreate();
   }
}

public int getInt(){  
    someMethod(context);
    return myInt;
   }
}
稍后在其他一些活动中,我必须获取LocationApplication类中的myInt。请注意,我不能将myInt设置为静态。所以我必须有一个LocationApplication类的实例。那么,我如何创建一个LocationApplication实例,该实例在前面由框架调用链初始化(意味着onCreate()是由框架调用的)


为实现这一目标还有其他建议吗

将应用程序类设置为静态,并获取对该类的引用

e、 g

然后从代码中访问如下方法:

int TheInt= LocationApplication.getInstance().getInt();
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android" >

    <application
        android:name="com.example.android.LocationApplication"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <!-- Omitted the rest of the XML -->

    </application>

</manifest>
您可以在代码中的任何地方调用它,而不仅仅是在可以调用getApplication()的地方


您需要在清单中注册该类。

在Android中,当子类化
应用程序
类时,您必须告诉框架您希望使用它。框架将只保留
应用程序
子类的一个实例,您可以通过向AndroidManifest.xml中的
应用程序
标记添加以下属性来实现这一点:

android:name="com.example.android.LocationApplication"
用您自己的packageId替换
com.example.android

您的清单可能如下所示:

int TheInt= LocationApplication.getInstance().getInt();
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android" >

    <application
        android:name="com.example.android.LocationApplication"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <!-- Omitted the rest of the XML -->

    </application>

</manifest>

如何创建应用程序类的实例

在清单文件中

<application android:name="fully qualified name of your application class"
 .............................
 ............................../>

现在,您可以在MapApplication上调用getInt。

让我们来设计一下我是如何使类LocationApplication成员公共的静态int-myInt;我可以直接获取LocationApplication.myInt吗?而不是调用LocationApplication=(LocationApplication)getApplication();application.myInt?或者建议始终通过调用getApplication()来获取它。由于框架管理
LocationApplication
的实例,我建议始终通过
getApplication()
访问该实例。您可以在此处阅读有关
应用程序
类的更多信息:
MyApplication mApplication = (MyApplication)getApplication();