2016-06-20 1 views
0

J'essaie de créer un tiroir de navigation. J'ai étendu BaseActivity sur ma classe MainActivity et SecondActivityClass. Alors que excecuting l'erreur est:Null Pointer Exception Bouton du widget

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void 
android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
at com.example.navigationdrawer.BaseActivity.onPostCreate(BaseActivity.java:19) 

je ne comprends pas, quand je l'ai boutons initialisé avant alors ce qui cause l'erreur. `

import android.content.Intent; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

public class BaseActivity extends AppCompatActivity { 
Button inbox, address, logout; 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     inbox = (Button) findViewById(R.id.navigation_inbox); 
     inbox.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(BaseActivity.this, MainActivity.class)); 
      finish(); 
     } 
     }); 
     address = (Button) findViewById(R.id.navigation_address); 
     address.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(BaseActivity.this, SecondActivity.class)); 
       finish(); 
     } 
     }); 
     logout = (Button) findViewById(R.id.navigation_logout); 

     logout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(BaseActivity.this, "LoGOUT", Toast.LENGTH_SHORT).show(); 
      finish(); 
     } 
     }); 
    } 
} 
+0

peuvent être des boutons sont manquants dans le fichier de mise en page que vous utilisez –

+0

J'ai ajouté des boutons, Il existe deux mises en page distinctes pour MainActivity et SecondActivity. J'ai setContentview dans les classes respectives – Walberg

+1

définissez-vous votre affichage de contenu? –

Répondre

0

Vous ne pouvez pas créer une vue (activité sans définir l'affichage du contenu. Peu importe ce que vous voulez définir dans les activités que vous commencez. Il n'y a pas de vue pour votre BaseActivity pour ouvrir avec.
Vous ne sont pas la configuration de votre point de vue du contenu de l'activité actuelle BaseActivity.

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    setContentView(R.layout.act_base); 

Et j'utiliser oncreate, je ne comprends pas pourquoi vous utilisez PostCreate.

+0

Je souhaite définir ma classe contentView de MainActivity lorsque l'application charge les données que j'ai spécifiées dans MainActivity. MainActivity étend BaseActivity que j'ai posté. – Walberg

+0

Vous ne pouvez pas faire cela, la baseActivity en a besoin –

+0

J'ai ajouté setContentView de mon MainActivity. L'erreur est toujours la même. Dans mon fichier manifeste, l'activité du lanceur est MainActivity.class. – Walberg