空指针异常当意图崩溃时

时间:2017-01-10 20:05:59

标签: android nullpointerexception

enter image description here我正在尝试创建一个Android应用,但我遇到了这个错误,我不知道该怎么做以及为什么它从头开始显示,应用程序崩溃了日志中出现以下错误:

E / AndroidRuntime:致命异常:主要                   过程:com.example.ramy.medicare,PID:2487                   java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.ramy.medicare / com.example.ramy.medicare.Profile.materialtabs.activity.MainActivity}:java.lang.NullPointerException:尝试调用虚方法&# 39; void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'在null对象引用上                       在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)                       在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)                       在android.app.ActivityThread.-wrap12(ActivityThread.java)                       在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477)                       在android.os.Handler.dispatchMessage(Handler.java:102)                       在android.os.Looper.loop(Looper.java:154)                       在android.app.ActivityThread.main(ActivityThread.java:6119)                       at java.lang.reflect.Method.invoke(Native Method)                       在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)                       在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

引起:java.lang.NullPointerException:尝试调用虚方法' void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'在null对象引用上                       在com.example.ramy.medicare.Profile.materialtabs.activity.MainActivity.onCreate(MainActivity.java:43)

                  at android.app.Activity.performCreate(Activity.java:6679)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                  at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:154) 
                  at android.app.ActivityThread.main(ActivityThread.java:6119) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

这是代码:

package com.example.ramy.medicare.Profile.materialtabs.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;

import android.widget.Button;

import com.example.ramy.medicare.R;




public class MainActivity extends AppCompatActivity implements View.OnClickListener {


    private Button  btnScrollableTabs_b,  btnIconTabs_b, btnCustomIconTextTabs_b;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        toolbar = (Toolbar) findViewById(R.id.toolbar);
//        setSupportActionBar(toolbar);








        btnScrollableTabs_b = (Button) findViewById(R.id.btnScrollableTabs);
        btnIconTabs_b = (Button) findViewById(R.id.btnIconTabs);
        btnCustomIconTextTabs_b = (Button) findViewById(R.id.btnCustomIconTabs);

        //at these lines is the error:
        **btnScrollableTabs_b.setOnClickListener(this);   
        btnIconTabs_b.setOnClickListener(this);
        btnCustomIconTextTabs_b.setOnClickListener(this);**



//        btnSimpleTabs = (Button) findViewById(R.id.btnSimpleTabs);
//        btnScrollableTabs = (Button) findViewById(R.id.btnScrollableTabs);
//        btnIconTextTabs = (Button) findViewById(R.id.btnIconTextTabs);
//        btnIconTabs = (Button) findViewById(R.id.btnIconTabs);
//        btnCustomIconTextTabs = (Button) findViewById(R.id.btnCustomIconTabs);

//        btnSimpleTabs.setOnClickListener(this);

//        btnScrollableTabs.setOnClickListener(this);
//        btnIconTextTabs.setOnClickListener(this);
//        btnIconTabs.setOnClickListener(this);
//        btnCustomIconTextTabs.setOnClickListener(this);

}

    @Override
    public void onClick(View view) {
        switch (view.getId()) {

            case R.id.btnScrollableTabs:
                startActivity(new Intent(MainActivity.this, ScrollableTabsActivity.class));
                break;
            case R.id.btnIconTabs:
                startActivity(new Intent(MainActivity.this, IconTabsActivity.class));
                break;
            case R.id.btnCustomIconTabs:
                startActivity(new Intent(MainActivity.this, CustomViewIconTextTabsActivity.class));
                break;
        }
    }
}

请告诉我该怎么做我很困惑,我实例化了这个对象,为什么我得到这个错误???

enter image description here

2 个答案:

答案 0 :(得分:0)

确保您在布局文件中定义了正确的名称" btnScrollableTabs_b'如果findViewById()无法找到返回null的元素,那么应该在那里。

答案 1 :(得分:0)

交叉引用您在XML布局文件中使用的ID,其中包含用于实例化OnCreate内部按钮的ID。

如果ID不匹配,则会为按钮分配空值,因此NullPointerException。