Accéder à des Variables globales dans Android
J'ai un fichier de classe qui s'étend SurfaceView et met en œuvre SurfaceHolder.Rappel de ce qui est enregistré en tant que myView.java
public class myView extends SurfaceView implements SurfaceHolder.Callback
Maintenant j'ai un autre fichier java GlobalVar.java qui est comme ce
import android.app.Application;
class GlobalVar extends Application {
private int touchCount;
public int getCount()
{
return touchCount;
}
public void setCount(int tCount)
{
touchCount = tCount;
}
}
À l'intérieur de mavue classe(myView.java) il existe une fonction onTouchEvent
@Override
public boolean onTouchEvent(MotionEvent event) {
int pointerCount = event.getPointerCount();
}
Maintenant ce que je veux, c'est de définir la Variable globale touchCount à pointCount.
Et j'ai essayé comme ceci
@Override
public boolean onTouchEvent(MotionEvent event) {
int pointerCount = event.getPointerCount();
GlobalVar tcount = ((GlobalVar)getApplicationWindowToken());
tcount.setCount(pointerCount);
}
Et ce qui me donne l'erreur.Alors, comment puis-je définir la variable globale de la valeur à l'intérieur de ce mavue fichier de classe???
Partie Application du fichier manifeste
<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>
Vous devez vous connecter pour publier un commentaire.
Peut-être vous aurez besoin d'une certaine classe singleton qui va contenir toutes les variables?
Modèle d'utilisation:
Essayez plutôt ceci:
Ce que vous faites ne fonctionne pas car l'objet retourné par cette méthode n'est pas l'objet Application.
Je dois également mentionner que vous avez besoin pour enregistrer le nom de votre Application personnalisée classe dans le manifeste en utilisant android:name="GlobalVar" tag dans votre Application nœud.
Je vous conseille d'utiliser SharedPreferences.
Exemple:
Alors, pour y accéder:
Changement:
à:
getApplicationWindowToken()
àgetContext().getApplicationContext()
, alors.Ne devriez-vous pas mis le
android:name
attribut sur laapplication
qui contient votreActivity
? Donc, je pense que votre manifeste devrait être:Je n'ai pas essayé moi-même mais c'est la première chose que je voudrais essayer.