我得到错误:尝试在空对象引用上调用虚方法..

时间:2017-10-26 10:01:18

标签: java android nullpointerexception

我不知道我做错了什么。

  

java.lang.NullPointerException:尝试调用虚方法   ' android.text.Editable android.widget.EditText.getText()'在null   对象参考
  在   si.skorajporocena.skorajporocena.PrvaPrijavaActivity $ 1.onClick(PrvaPrijavaActivity.java:51)

以下是代码:

EditText pass;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_prva_prijava);

        pass = (EditText) findViewById(R.id.etPassword);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.floatingActionButton);
        viewPager = (ViewPager) this.findViewById(R.id.pager);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(i==0){
                    if (pass.getText().toString().isEmpty()) { // <-- this is the 51 line
                        Snackbar.make(view, "Niste vnesli aktivacijske kode.", Snackbar.LENGTH_SHORT).
                                setAction("Action", null).show();
                    }
                    else {
                        i=1;
                        viewPager.setCurrentItem(i);
                    }
                }
                else if(i>0) {
                    i++;
                    viewPager.setCurrentItem(i);

                    if(i==3){
                        Intent intent;
                        intent = new Intent(getApplicationContext(),MainActivity.class);
                        startActivity(intent);
                        finish();
                    }
                    //Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    //        .setAction("Action", null).show();
                }
            }
        });

4 个答案:

答案 0 :(得分:-1)

检查您的布局中是否存在视图R.id.etPassword。

答案 1 :(得分:-1)

您的os.putenv变量为空。最可能的原因是pass

的布局错误

答案 2 :(得分:-1)

我已经解决了这个问题。 问题是pass = (EditText) findViewById(R.id.etPassword);在if语句之外,我需要变量pass

这是代码现在的样子:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.floatingActionButton);
        viewPager = (ViewPager) this.findViewById(R.id.pager);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(i==0){
                    pass = (EditText) findViewById(R.id.etPassword);
                    if (pass.getText().toString().isEmpty()) { // <-- this is the 51 line
                        Snackbar.make(view, "Niste vnesli aktivacijske kode.", Snackbar.LENGTH_SHORT).
                                setAction("Action", null).show();
                    }
                    else {
                        i=1;
                        viewPager.setCurrentItem(i);
                    }
                }

答案 3 :(得分:-1)

我认为你正在使用id&#39; etPassword &#39;来自其他.xml文件。这方式代码编译成功但运行时点击浮动按钮空指针异常发生。