2016-06-13 2 views
0

이 오류에 대해서는 여기에서도 어디에서나이 오류를 검색했지만 해결할 수있는 것은 아무것도 없습니다. 그래서 내 사례가 그 것처럼 보이는만큼 독특합니다. 여기 내 응용 프로그램의 AndroidManifest.xml에 있습니다 :null 개체 참조에서 가상 메서드를 호출하려고했지만 개체가 null이 아닙니다.

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.3" 

defaultConfig { 
    applicationId "dell.example.com.myapp" 
    minSdkVersion 15 
    targetSdkVersion 21 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.1.0' 
compile 'com.jakewharton:butterknife:7.0.1' 
compile 'com.android.support:design:23.1.0' 
} 

이가 먼저 MainActivity.java 클래스의 일부입니다 다음 MainActivity없이 널 (null) 예외가 발생되기 전에 내가이 개 다른 활동을

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 


@Bind(R.id.tagEditText) 
EditText storyTag; 

@Bind(R.id.user_name) 
TextView username; 

@Bind(R.id.drawer_layout) 
DrawerLayout drawer; 

@Bind(R.id.nav_view) 
NavigationView navigationView; 

@Bind(R.id.storyTableLayout) 
TableLayout storyTableLayout; 

@Bind(R.id.toolbar) 
Toolbar toolbar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    setSupportActionBar(toolbar); 
    clearTags(); // Clear all tags to load an updated copy from the database 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); **// THIS IS WHERE IT CRASHES** 
    toggle.syncState(); 
    username.setText(user.getName()); 
    navigationView.setNavigationItemSelectedListener(this); 
    refreshStories(); // add previously saved story tags to GUI 
} 

뷰 중 하나를 사용하여 선언 !!!! 내가 이런 식으로 선언 할 경우에도 :

클래스 변수 :

EditText storyTag; 

onCreate()에서 :

storyTag = (EditText) findViewById(R.id.tagEditText) 

내가, 예를 들어 말한다면를 :

storyTag.setText("Hello"); 

이 인상됩니다 동일한 예외는 다음과 같습니다.

java.lang.RuntimeException: Unable to start activity ComponentInfo{dell.example.com.myapp/dell.example.com.myapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.DrawerLayout.addDrawerListener(android.support.v4.widget.DrawerLayout$DrawerListener)' on a null object reference 
. 
. 
. 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.DrawerLayout.addDrawerListener(android.support.v4.widget.DrawerLayout$DrawerListener)' on a null object reference 

모든 xml 레이아웃은 동일한 ID 이름으로 존재하며 R.java에는 동일한 ID가 포함됩니다. !!!!

나는 이것을 해결하는 방법을 모른다. .. 제발 도와주세요!

+0

가 어디 "서랍"을 초기화합니까? –

+0

@MobileDeveloper'@Bind (R.id.drawer_layout)'<- 버터 나이프 주석 –

+0

아 좋아요. 아래 @ Budius에서 제안을 시도 했습니까? –

답변

1

@Bind가 자동으로 발생하지 않습니다, 당신은 그것을 호출 할 수 있습니다

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ButterKnife.bind(this); <<< THIS LINE 
+0

나는 그것을 시도했다. 그리고 나는 전체 ButterKnife 일을 타고있다. 그리고 findViewById가 NULL을 반환하기 때문에 여전히 TextView는 setText를하지 않을 것이다 !! –

+0

즉, activity_main 레이아웃에는 해당보기가 포함되지 않습니다. – Budius

관련 문제