【问题标题】:NullPointerException with findViewById in variable definitionNullPointerException 与变量定义中的 findViewById
【发布时间】:2020-02-10 22:09:31
【问题描述】:

我已经阅读了关于 Null Point Exceptions 的广受欢迎的帖子,但我仍然对为什么会收到错误感到困惑。我正在尝试确保填写一些 EditText。我已经在 onCreate 方法中尝试过了,它仍然不起作用。任何帮助,将不胜感激。如果这是一个愚蠢的问题,我深表歉意。

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

EditText scoutName = (EditText) findViewById(R.id.editSN);
EditText teamNumber = (EditText) findViewById(R.id.editTN);
EditText matchNumber = (EditText) findViewById(R.id.editMatchNumber);

@Override
protected void onCreate(Bundle savedInstanceState) {
    stringBuilder = new StringBuilder();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

Button submit = findViewById(R.id.submit);
    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (fieldsOK) {
                openActivity2();
            }
            else {
                System.out.println("You have Missing Forms");
            }
        }
    });
}


private boolean validate(EditText[] fields){
    for(int i = 0; i < fields.length; i++){
        EditText currentField = fields[i];
        if(currentField.getText().toString().length() <= 0){
            return false;
        }
    }
    return true;
}

boolean fieldsOK = validate(new EditText[] { scoutName, teamNumber, matchNumber });

错误

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.scoutingapp3250/com.example.scoutingapp3250.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference

错误出现在 onCreate 方法上方的 scoutName 上

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    onCreate中调用setContentView后需要调用findViewById

    【讨论】:

    • 我不断得到从未使用过的变量名称,即使它在 fieldsOK 数组中使用。有什么想法吗?
    • 我不知道fieldsOkay 是什么,因为我看不到你的代码。
    • 它在第一个编码堆栈底部的问题中
    • 心理调试:您可能正在 onCreate 中初始化它们,但由于这发生在 fieldsOK 初始化之后,它告诉您 fieldsOK 看到的是旧的、未初始化的 null 值。您需要在设置后检查这些值。
    • 这可能与这些 EditText 在活动启动时技术上为空的事实有关。我正在做问卷调查时,我所引用的内容在活动开始时未填写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    相关资源
    最近更新 更多