猿问

扩展应用程序以全局共享变量

我正在尝试使用此处说明的方案在应用程序的各个活动之间共享两个ArrayList:如何在Android中声明全局变量?。


这是我的应用程序子类:


public class GlobalVars extends Application{

 ArrayList<Player> players = new ArrayList<Player>(); 

  ArrayList<String> playerNames = new ArrayList<String>();


  public ArrayList<Player> getPlayers(){

   return players;

  }


  public ArrayList<String> getPlayerNames(){

   return playerNames;

  }


  public void setPlayers(ArrayList<Player> p){

   players = p;

  }


  public void setPlayerNames(ArrayList<String> pn){

   playerNames = pn;

  }


}

并使用了代码:


 GlobalVars gv = (GlobalVars)getApplicationContext();

        players = gv.getPlayers();

        playerNames = gv.getPlayerNames();

访问这些变量。我在其中定义gv的第一行抛出classcastexception。有人知道为什么吗?


这是我添加到清单中的代码:


<application android:name="com.myname.GlobalVars"

 android:icon="@drawable/icon"

 android:label="@string/app_name"></application>

编辑:为澄清起见,这是我的全部清单:


<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.myname.bpstattracker" android:versionCode="1"

    android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".BPStatTracker" android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>


        <activity android:name=".BPSTAdd"></activity>

        <activity android:name=".OneOrThree"></activity>

        <activity android:name=".SixOrTen"></activity>


    </application>



    <application android:name="com.myname.GlobalVars"

        android:icon="@drawable/icon" android:label="@string/app_name">


</application>

</manifest> 


MYYA
浏览 521回答 3
3回答

拉丁的传说

您应该致电getApplication()您的活动或服务:GlobalVars gv = (GlobalVars)getApplication();编辑:您<application>在清单中定义了两次。
随时随地看视频慕课网APP

相关分类

Android
我要回答