使用DataBinding为EditText赋值时出现NullPointerException异常
问题原因
- 你声明了
EditActivityBinding对象,但未完成初始化就直接调用binding.edtArticulo,导致空指针异常。 - 传统的
setContentView(R.layout.edit_activity)不会自动生成DataBinding/ViewBinding实例,必须通过绑定框架的专属API初始化绑定对象。
解决办法
1. 确保项目启用绑定功能
如果还没开启,在app模块的build.gradle中添加配置(二选一即可):
android { ... buildFeatures { // 使用DataBinding时开启 dataBinding true // 使用ViewBinding时开启 // viewBinding true } }
2. 初始化Binding对象并替换布局加载方式
修改EditActivity的onCreate方法,替换原有的setContentView逻辑:
public class EditActivity extends AppCompatActivity { EditActivityBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 方式一:DataBinding初始化 binding = DataBindingUtil.setContentView(this, R.layout.edit_activity); // 方式二:ViewBinding初始化(若使用ViewBinding) // binding = EditActivityBinding.inflate(getLayoutInflater()); // setContentView(binding.getRoot()); String articulo = getIntent().getStringExtra("ARTICULO"); Toast.makeText(this, articulo, Toast.LENGTH_SHORT).show(); // 额外判空,避免ARTICULO为null时调用trim()触发新的空指针 if (articulo != null) { binding.edtArticulo.setText(articulo.trim()); } } }
内容的提问来源于stack exchange,提问作者Manuel Torres
相关产品推荐
相关产品推荐

