2017-02-02 1 views
0

J'ai un bouton, onclick = "weboscio".VOID: statique et non statique appelé sur le même bouton

Je veux faire deux choses clic:

public void web(View view) { 
    Intent intent = new Intent(this, about.class); 
    startActivity(intent); 
    //opens a new layout 

Et aussi:

public static void warning(Context context, int id, int titleResId, int textResId, PendingIntent intent) { 

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    String title = context.getString(titleResId); 
    ....etc.... 
    // to open a pop-up window 

Il suffit de mettre deux vides il y en une seule activité et l'appeler sur le bouton clic. Je cherchai pas mal, mais rien d'utile .. J'ai aussi essayé:

public static void weboscio(String args[]) { 
     home something = new something(); 
     something.web(); 
     new something().warning(); 

Il fonctionne évidemment que des vides non statiques .. et aussi moi nous une erreur dans .web (ICI) et .warning (ICI).

weboscio = onclick fonction

maison = principale activité java

web = activité censée ouvrir une nouvelle mise en page

avertissement = activité supposée afficher certains avertissement sur la nouvelle mise en page

+0

'home.warning();' –

+0

Heh je vis à vis, mais encore, pourquoi Iam obtenir des erreurs dans les nouvelles home.warning ** (IL) **; - parce que l'avertissement ci-dessous a: ** (Context context, int id, int titreResId, int tex) ** et aussi, il est public statique et non statique dans un, et studio ne l'aime pas besoin d'être appelé avec Instance , mais l'enfer je sais comment le faire: ( –

+0

Vous devez toujours passer des paramètres à ces fonctions si vous n'êtes pas déjà ... –

Répondre

1

Ok, après avoir réexaminé le problème, je comprends ce qui se passe. Vous appelez simplement la méthode statique de manière incorrecte.

Pour ce faire, à la place:

public static void weboscio(String args[]) { 
    home something = new something(); 
    something.web(); 
    home.warning(...); 

Une méthode statique est appelée par la classe, et non pas l'instance de la classe.

Voici un exemple:

String x = new String("Hello"); 
x.concat("World"); // non-static 

String y = String.join("Hello", "World"); // static 
+0

oh merci!, mais ne devrait pas être là ** nouvelle maison(); ** au lieu de ** quelque chose de nouveau(); * *? –

+0

Non, les méthodes statiques n'utilisent pas d'instance, elles sont utilisées lorsqu'une instance n'est pas nécessaire, comme avec "String.valueof (...)", vous n'avez pas besoin d'une instance de String pour utilisez la méthode, c'est le but des méthodes statiques – Mick

+0

J'ai ajouté un exemple de la différence répondre. – Mick