2017-10-01 2 views
1

Im complètement débutant au studio android et je ne sais que Java de base. Je sais que j'ai besoin de déclarer les Widgets sur la classe pour l'utiliser dans une autre fonction, mais il donne toujours une erreur de référence nulle. Et plus de détails que je peux ajouter plus? Je déteste l'affichage des choses là-bas ..Android Studio NullPointerException sur un bouton défini sur la classe

package com.uruskan.shock.kultureventbase; 

import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.design.widget.BottomNavigationView; 
import android.support.v7.app.AppCompatActivity; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


public class MainActivity extends AppCompatActivity implements 
View.OnClickListener { 
TextView tv; 
Button bYemek, bSleep, bAttack; 
int sayac = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    tv = (TextView) findViewById(R.id.event_date); 
    Button bYemek = (Button) findViewById(R.id.button); //yemek ye 
    Button bSleep = (Button) findViewById(R.id.button2); //uyu 
    Button bAttack = (Button) findViewById(R.id.attack); // saldır 
    bYemek.setOnClickListener(this); 
    bSleep.setOnClickListener(this); 
    bAttack.setOnClickListener(this); 
    Karakter k = new Karakter(); 
    k.hareketSayisi = 10; 
    k.kilo = 10; 
    k.saldiriGücü = 100; 

} 

@Override 
public void onClick(View v) { 
    if (v.getId() == bAttack.getId()) { 
     //Attack Code 
     tv.setText("Attack "); 
    } else if (v.getId() == bSleep.getId()) { 
     //sleep code 
     tv.setText("Sleeping Rrrrrr !"); 
    } else if (v.getId() == bYemek.getId()) { 
     //eat code 
     tv.setText("Narcissus get her, for a dinner.."); 
    } 
} 
} 
+0

double possible de [Qu'est-ce qu'un NullPointerException, et comment puis-je résoudre ce problème?] (Https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do- i-fix-it) – Blasanka

+0

Enlever 'Button' de' Button bAttack' avec votre code que vous avez défini une variable locale qui ombrage le champ et votre champ reste null. (de même pour 'bSleep' et' bYemek') – Oleg

Répondre

0

Mettez à jour votre code:

bYemek = (Button) findViewById(R.id.button); //yemek ye 
bSleep = (Button) findViewById(R.id.button2); //uyu 
bAttack = (Button) findViewById(R.id.attack); // saldır 
+0

Pourquoi je devrait faire ça? (Oh d'accord, ça devient une variable locale.) –

+0

Oh, quelqu'un a déjà posté ça. (y) –

+0

@ReazMurshed il Lools comme nous avons posté en même temps –

0

Vous Initialisation Button des variables localement qui est hors de portée quand ils sont référencés de la fonction onClick et ce C'est pourquoi vous obtenez le NullPointerException. Comme vous avez déclaré les boutons en tant que variables publiques, vous devez affecter les variables comme ceci.

bYemek = (Button) findViewById(R.id.button); //yemek ye 
bSleep = (Button) findViewById(R.id.button2); //uyu 
bAttack = (Button) findViewById(R.id.attack); // saldır 

Et dans la fonction onClick, vous pouvez simplement le faire.

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 
     case R.id.button: 
      tv.setText("Narcissus get her, for a dinner.."); 
      return; 
     case R.id.button2: 
      tv.setText("Sleeping Rrrrrr !"); 
      return; 
     case R.id.attack: 
      tv.setText("Attack "); 
      return; 
    } 
} 
+0

Merci.J'ai pensé à utiliser l'interrupteur-cas aussi. –