我知道這個話題不算什麼新東西,但我真的被這個問題困住了,並且嘗試了很多答案,但我仍然無法說清楚我應該寫什麼和在哪裏寫和使用。如何以編程方式正確添加視圖?
我有這個佈局文件的settings.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
...
<TextView
android:id="@+id/pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="7dp"
android:layout_marginTop="10dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/pass_del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="7dp"
android:layout_marginTop="7dp"
android:text="Удалить пароль"
android:textAppearance="?android:attr/textAppearanceMedium" />
...
</LinearLayout>
我有TextView passdel
,我想以編程方式添加。它onCreate
介紹passdel=(TextView) findViewById(R.id.pass_del);
而且我有這些方法
public void onPasSet() {
pass.setText("Сменить пароль");
((LinearLayout)passdel.getParent()).addView(passdel);
}
public void onPasDel() {
pass.setText("Установить пароль");
((LinearLayout)passdel.getParent()).removeView(passdel);
}
onPasDel
運作良好。 我猜Java需要當前佈局。所以當我刪除View
時,它在這個佈局上。當我嘗試添加這個View
時,Java試圖在當前佈局上找到這個視圖,但它被刪除了,所以..nullpointerexception。我應該如何正確編寫所有addView
的東西?如何指出所需的佈局?
你會如何期待'((LinearLayout)passdel.getParent()).addView(passdel);'工作嗎?如果你在某處添加'passdel',可能是因爲它沒有父節點,所以'getParent'不能返回任何東西,只能爲空。你應該直接引用佈局,給它一個id。 – njzk2