2016-06-20 2 views
0

탐색 서랍을 만들려고합니다. 내 MainActivity 클래스와 SecondActivityClass에 BaseActivity를 확장했습니다. 오류를 excecuting하는 동안 :null 포인터 예외 위젯 버튼

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) 

내가 이해하고 있지 않다, 나는 그 오류의 원인이 무엇을하기 전에 버튼을 초기화 한 경우. `

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

수 있습니다 버튼을 사용중인 레이아웃 파일에 누락되었습니다. –

+0

버튼이 추가되었습니다. MainActivity 및 SecondActivity에 대한 두 개의 별도 레이아웃이 있습니다. 각 클래스에 setContentview가 있습니다. – Walberg

+1

콘텐츠 뷰를 설정합니까? –

답변

0

당신은 콘텐츠보기를 설정하지 않고 (활동을하는 뷰를 만들 수 없습니다. 관계없이 당신이 시작하는 활동에 설정 원하는 것을. 당신의 BaseActivity 함께 여는 대한보기가 없습니다.
당신 당신이 PostCreate를 사용하는 이유. 현재 활동 BaseActivity에 대한

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

를 콘텐츠보기를 설정하지 않는 내가 한 OnCreate 사용하는 것이, 이해가 안 돼요.

+0

MainActivity에 지정한 앱이로드 될 때 MainActivity 클래스의 contentView를 설정하려고합니다. MainActivity는 내가 게시 한 BaseActivity를 확장합니다. – Walberg

+0

당신이 할 수 없다, BaseActivity는 하나만 필요하다 –

+0

내 MainActivity의 setContentView를 추가했다. 여전히 오류는 동일합니다. 내 매니페스트 파일에서 실행 프로그램 활동은 MainActivity.class입니다. – Walberg