在Android中访问全局变量

Shi*_*lal 1 android global-variables

我有一个类文件,它扩展了SurfaceView并实现了SurfaceHolder.Callback,它保存为myView.java

public class myView extends SurfaceView implements SurfaceHolder.Callback
Run Code Online (Sandbox Code Playgroud)

现在我得到了另一个java文件GlobalVar.java,就像这样

import android.app.Application;

class GlobalVar extends Application {

private int touchCount;

public int getCount()
  {
  return touchCount;
  }

public void setCount(int tCount)
  {
  touchCount = tCount;
  }
}
Run Code Online (Sandbox Code Playgroud)

在myView类(myView.java)中有一个onTouchEvent函数

@Override
public boolean onTouchEvent(MotionEvent event) {
   int pointerCount = event.getPointerCount();
   }
Run Code Online (Sandbox Code Playgroud)

现在我想要的是将全局变量touchCount设置为pointCount.我试过这样的

@Override
public boolean onTouchEvent(MotionEvent event) {
    int pointerCount = event.getPointerCount();
    GlobalVar tcount = ((GlobalVar)getApplicationWindowToken());
tcount.setCount(pointerCount);
  } 
Run Code Online (Sandbox Code Playgroud)

这给了我error.o如何在myView类文件中设置全局变量值???

清单文件的应用程序部分

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".MyViewActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
<application android:name=".GlobalVar"  android:icon="@drawable/icon"                 android:label="@string/app_name">
</application>
Run Code Online (Sandbox Code Playgroud)

Ole*_*gas 10

也许你需要一个单独的类来保存你所有的变量?

public class GlobalVar {

    public int getMyVar() {
        return myVar;
    }

    public void setMyVar(int myVar) {
        this.myVar = myVar;
    }

    private int myVar = 0;
    private static GlobalVar instance;

    static {
        instance = new GlobalVar();
    }

    private GlobalVar() {
    }

    public static GlobalVar getInstance() {
        return GlobalVar.instance;
    }

}
Run Code Online (Sandbox Code Playgroud)

使用模式:

@Override
public boolean onTouchEvent(MotionEvent event) {
    int pointerCount = event.getPointerCount();
    GlobalVar.getInstance().setMyVar(pointerCount);
} 
Run Code Online (Sandbox Code Playgroud)