我有一个用于充气布局的代码:
mainLayout = findViewById(R.id.mainLayout);
addNewMed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNewMed.startAnimation(AnimationUtils.loadAnimation(MedicationAdd.this, R.anim.rotate_complete));
v = LayoutInflater.from(MedicationAdd.this).inflate(R.layout.medication_poles, null);
mesurement = v.findViewById(R.id.mesurement);
mainLayout.addView(v);
}
});
当我要从mesurement
中找到我的微调器medication_poles
时,会出现空错误
medication_poles.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/medPole"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginBottom="8dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Время приема"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Препарат"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Дозировка"/>
<Spinner
android:id="@+id/mesurement"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</Spinner>
</LinearLayout>
如何从膨胀的布局中找到对象?
答案 0 :(得分:1)
您正在使用通过onClick方法传递给您的视图。 v(view)的作用域如此之大,因此您不能在该方法之外使用该view对象。 v(视图对象)可能会导致崩溃,因为它可能无法从按钮类强制转换为视图类。
尝试下面的代码。
<div class="outer-container padding">
<div class="overflowing-container padding">
<div class="large-element"></div>
<div class="large-element"></div>
<div class="large-element"></div>
</div>
<div class="inherit-height-container"></div>
</div>
答案 1 :(得分:0)
我认为问题在于您没有在容器中添加放大视图。 因此,替换:
v = LayoutInflater.from(MedicationAdd.this).inflate(R.layout.medication_poles, null)
具有:
v = LayoutInflater.from(MedicationAdd.this).inflate(R.layout.medication_poles, mainView,false)
答案 2 :(得分:0)
尝试一下:
addNewMed.startAnimation(AnimationUtils.loadAnimation(MedicationAdd.this,R.anim.rotate_complete));
another_view = getLayoutInflater().inflate(R.layout.medication_poles, null);
mesurement = another_view.findViewById(R.id.mesurement);
mainLayout.addView(another_view);
答案 3 :(得分:0)
使用“ view”等不同名称定义New View对象,v是onClick实例参数,您应该使用另一个。
尝试:
addNewMed.startAnimation(AnimationUtils.loadAnimation(MedicationAdd.this, R.anim.rotate_complete));
View view = LayoutInflater.from(MedicationAdd.this).inflate(R.layout.medication_poles, null);
mesurement = view.findViewById(R.id.mesurement);
mainLayout.addView(view);