我从EditCardActivity
开始MainActivity
。
该应用首次崩溃,Android系统显示“再次打开应用”警报。
当我重新打开该应用程序时,它可以正常工作。
我在此站点上看到了很多答案,并且已经按照这些答案进行了跟踪,但是没有用。
在调用setContentView()
之前,我已经在onCreate()
方法中调用了findViewByID()
。
我已验证我在findViewByID()
中传递的ID拼写正确。
我也尝试将EditText
设为类成员,并使用onCreate()
方法对其进行初始化。
我也尝试使用onStart()
和onPostCreate()
方法。
当我尝试调用View时,我认为View尚未加载,因此findViewByID()
返回null。因此,我尝试使用Thread.sleep(1000)
使其加载1秒,但仍然存在相同的问题。
这是有问题的代码部分。
// MainActivity.java
public void editCard(View v) {
Intent i = new Intent(this, EditCardActivity.class);
startActivity(i);
}
<!--activity_edit_card.xml-->
...
<EditText
android:id="@+id/add_card_category_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin"
android:ems="10"
android:hint="@string/add_card_category_et_hint"
android:inputType="text"
android:textSize="@dimen/font_size" />
...
// EditCardActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_card);
showContents();
}
private void showContents() {
EditText editCardCategoryET = findViewById(R.id.add_card_category_et);
editCardCategoryET.setText(currentCard.getCategory()); // This line is throwing NullPointerException
}
错误
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
编辑:
我知道是什么导致了错误。
我指的是add_card_category_et
而不是edit_card_category_et
。
前一个视图属于我的应用程序另一个Activity的不同布局文件。
对不起,我无法捕捉到这个小错误。
虽然很小,但它让我停留了三天。
无论如何,感谢您的回答和评论。
答案 0 :(得分:-1)
因为editCardCategoryET找不到任何值。因此它抛出 Exception 。可以通过添加“”来添加额外的字符来解决。然后,应用程序将不会崩溃。 editCardCategoryET.setText(" "+currentCard.getCategory());
。
您也可以使用try(),catch()方法来处理它。