2017-05-13 5 views
0

でボタンを追加することが、私はこのエラーを取得しておいてください。 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.addView(android.view.View, android.view.ViewGroup$LayoutParams)' on a null object referenceは動的こんにちはボタンを追加しようとイムを断片

これは、そのフラグメントとして機能していない、通常の活動に適しています、私のコードです:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fav, container, false); 

    lSecond = (LinearLayout) v.findViewById(R.id.lSecond); 
    lThird = (LinearLayout) v.findViewById(R.id.lThird); 
    return v; 
} 
public void bCreate(String i) 
{ 
    LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(matchParent, wrapContent); 
    Button btnNew = new Button(this.getActivity()); 
    btnNew.setBackgroundResource(R.drawable.button); 
    btnNew.setTextColor(Color.parseColor("#ffffff")); 
    btnNew.setText(i); 
    scale = getResources().getDisplayMetrics().density; 
    int top = (int) (5 * scale + 0.5f); 
    int bot = (int) (5 * scale + 0.5f); 
    if (Second < Third) 
    { 
     int left = (int) (10 * scale + 0.5f); 
     int right = (int) (5 * scale + 0.5f); 
     btnParams.leftMargin = left; 
     btnParams.rightMargin = right; 
     btnParams.topMargin = top; 
     btnParams.bottomMargin = bot; 
     lSecond.addView(btnNew, btnParams); 
     Second++; 
     btnNew.setOnClickListener(listen); 
    } 

bCreateはのonCreateで呼び出され、文字列私はなっている - 早すぎると呼ばれているデータベース

+0

これはおそらくhttps://i.stack.imgur.com/d4eF5.pngに役立ちます*あなたの*モデル*をあなたの*ビューから切り離してください。これは 'onCreate'(あなたのモデル)にたくさんの文字列を生成しているようです。そして、前に作成した文字列の配列(ビュー)に応じて、 'onViewCreated'に' Button'の束を作成する必要があります。ビューにはモデルが反映されます。同時に両方をしないでください。 ViewはonCreateの早い段階で利用できないため、NPEです。 –

+0

'bCreate()'はどこから呼び出されていますか? –

+0

@SammyTが呼び出されてonCreate –

答えて

0

bCreate()からStringです。値がある前に​​3210にアクセスしようとしています。返品の直前にonCreateView()bCreate()と電話してください。

+0

これは答えです、ありがとうございます。私は断片のライフサイクルにもっと注意を払う必要があります/ –

関連する問題