应用程序在单击带有空编辑文本的按钮时崩溃

Posted

技术标签:

【中文标题】应用程序在单击带有空编辑文本的按钮时崩溃【英文标题】:App crashes on button click with empty edittext 【发布时间】:2017-12-01 03:56:13 【问题描述】:

我正在开发一个有一些数学问题的应用程序。 我在 Photoshop 中制作了一张照片,在图像下方有一个 editText 和按钮。 一切都很好,但是当我在 editText 为空时单击按钮时,应用程序崩溃了。 我尝试了其他问题的示例,但它们对我没有帮助。

public class Start1Activity extends AppCompatActivity 

Button btn;

public void displayResult(String result) 
    Toast.makeText(Start1Activity.this, result, Toast.LENGTH_SHORT).show();


public void guess(View view)
    final EditText EditText2 = (EditText) findViewById(R.id.editText2);

    final int guessNumber = Integer.parseInt(EditText2.getText().toString());

    if (guessNumber == 3 )
        displayResult("That's right! Click once again for next level");
        btn = (Button) findViewById(R.id.bt3);
        btn.setOnClickListener(new View.OnClickListener()
            @Override
            public void onClick(View view)
                if(EditText2.getText().toString().isEmpty())
                    displayResult("Please enter some number");
                
                Intent anythingintent=new Intent(Start1Activity.this,Start2Activity.class);
                startActivity(anythingintent);
            
        );
    
    else
        displayResult("Wrong. Try again!");

    

【问题讨论】:

你应该在onCreate()方法中实例化视图而不是onClick() 【参考方案1】:

为了避免带有 parseInt() 的 NumberFormatException,请确保之前(不是在 onClick() 中)输入了一个值。

【讨论】:

【参考方案2】:

这里出了很多问题,但标题是您做事的顺序错误。您应该在 onClick 中对 EditText 进行所有检查,否则应用程序可能会抛出 NullPointerException。下面的代码应该适合你。

public void guess(View view)
    final EditText editTextField = (EditText) findViewById(R.id.editTextField);
    btn = (Button) findViewById(R.id.bt3);

    final int guessNumber = Integer.parseInt(editTextField.getText().toString());

    btn.setOnClickListener(new View.OnClickListener()
        @Override
        public void onClick(View view)
            if(editTextField.getText().toString().isEmpty()) 
                displayResult("Please enter a number");
            
            else if (!(guessNumber == 3)) 
                displayResult("Wrong. Try again!");
            
            else 
                displayResult("That's right! Click once again for next level");
                Intent anythingintent=new Intent(Start1Activity.this,Start2Activity.class);
                startActivity(anythingintent);
            
        
    );

【讨论】:

我的荣幸,编码愉快!

以上是关于应用程序在单击带有空编辑文本的按钮时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时应用程序崩溃 --- 在 SWIFT 中

未左键单击 Interaction.Triggers 按钮时 WPF 应用程序崩溃

当我单击按钮进入下一个屏幕时,移动 Android 应用程序崩溃

每当我的 EditText 为空并且按下按钮时,我的应用程序就会崩溃

SwiftUI - 在按钮单击时添加一行多个文本字段/视图

单击一行后,Extjs 4 网格自定义添加一个带有文本字段的面板