最初はタイトルと「+」ボタンしかないアクティビティで、ボタンをクリックするたびに、さらにいくつかのビューを含むLinearLayoutsを追加したいと思います。
これを解決する方法が特にわからないので、次のことを試してみました。追加するLinearLayoutは最大7つあるため、layout-xml-fileに追加し、すべてを次のように設定しました。android:visibility="gone"
これは私のlayout-xml-fileです:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="15dp"
android:paddingRight="15dp" >
<LinearLayout
android:id="@+id/layout_ppe2"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
(...)
<Button
android:id="@+id/bt_ppe2_newset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClickAddNewSet"
android:text="@string/plus"
/>
(...)
<LinearLayout
android:id="@+id/lin_ppe2_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal"
android:visibility="gone">
(...)
</LinearLayout>
<LinearLayout
android:id="@+id/lin_ppe2_3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:orientation="horizontal"
android:visibility="gone">
(...)
</LinearLayout>
(...)
</LinearLayout>
</ScrollView>
LinearLayouts lin_ppe2_2 --lin_ppe2_8があります。これは、ボタンをクリックして次々に表示するように設定する7つのものです。
今、onClickAddNewSet
私は次のようになりました(int counter
初期化された= 1):
public void onClickAddNewSet(View v){
ScrollView scrollView = (ScrollView) getLayoutInflater().inflate(R.layout.all_completed_bets, null);
LinearLayout layout = (LinearLayout) scrollView.findViewById(R.id.layout_ppe2);
LinearLayout layout2 = null;
switch(counter){
case 1:
layout2 = (LinearLayout) layout.findViewById(R.id.lin_ppe2_2);
break;
case 2:
layout2 = (LinearLayout) layout.findViewById(R.id.lin_ppe2_3);
break;
case 3:
layout2 = (LinearLayout) layout.findViewById(R.id.lin_ppe2_4);
break;
case 4:
layout2 = (LinearLayout) layout.findViewById(R.id.lin_ppe2_5);
break;
case 5:
layout2 = (LinearLayout) layout.findViewById(R.id.lin_ppe2_6);
break;
case 6:
layout2 = (LinearLayout) layout.findViewById(R.id.lin_ppe2_7);
break;
case 7:
layout2 = (LinearLayout) layout.findViewById(R.id.lin_ppe2_8);
break;
}
if(counter>0 && counter <8){
layout2.setVisibility(LinearLayout.VISIBLE);
}
counter++;
}
それは私に常にNullPointerException
行にaで言及されたエラーを与えますlayout2.setVisibility(LinearLayout.VISIBLE);
。私も試しました
LinearLayout layout = (LinearLayout) scrollView.findViewById(R.id.layout_ppe2);
LinearLayout layout2 = (LinearLayout) layout.findViewById(R.id.lin_ppe2_2);
layout2.setVisibility(LinearLayout.VISIBLE);
layout2がnullで初期化されているためにエラーが発生するかどうかを確認しますが、カウンターは正常に機能します(setText(counter)
アクティビティtitle-TextViewでテストしました)。だから今、私はこれが私にこれをもたらしている理由が本当にわかりませんNullPointerException
。私は本当に明白な何かを見落としていますか?または、私の目標を達成するためのより良い方法はありますか?注:このLinearLayoutを追加する必要があるだけでなく、後でいくつかの値も読み取る必要があります(各LinearLayoutには2つのEditTextがあります)。