【问题标题】:Dynamic inflating gives me a nullexception动态膨胀给了我一个空异常
【发布时间】:2016-04-05 10:13:01
【问题描述】:

我正在使用 LinearLayout 进行布局。此布局将在内部膨胀另一个布局。目前,我遇到了问题(nullexceptions)。我的膨胀代码是下一个:

private void addLayoutInvoices() {

        LinearLayout ll_invoices = new LinearLayout(getActivity());
        ll_invoices.setGravity(Gravity.CENTER);
        ll_invoices.setOrientation(LinearLayout.VERTICAL);

        LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        ll_invoices.setLayoutParams(llp);

        ...

        if(mas.size() > 0) {

            for (int i = 0; i < mas.size(); i++) {

                if(mas.get(i).getStatus() == 1){

                    View newGratLayout = LayoutInflater.from(getActivity()).inflate(R.layout.albaran_invoices_row, ll_invoices_layer, false);

                    newGratLayout.setId(i + 8000);

                    RelativeLayout rl_albaran_invoices_row = (RelativeLayout) newGratLayout.findViewById(R.id.rl_albaran_invoices_row);
                    final LinearLayout ll_details = (LinearLayout) newGratLayout.findViewById(R.id.ll_details);

                    ...

                    rl_albaran_invoices_row.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            if (!rowClicked) {
                                ll_details.setVisibility(View.VISIBLE);
                                rowClicked = true;
                            } else {
                                ll_details.setVisibility(View.GONE);
                                rowClicked = false;
                            }
                        }
                    });

                    ll_invoices.addView(newGratLayout);
                }

            }

            ll_invoices_layer.addView(ll_invoices);

            if(existsPending)
                bt_resend_pending.setVisibility(View.VISIBLE);
        }



    }

albaran_invoices_row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/rl_albaran_invoices_row"
    android:scrollIndicators="none">

    ...

</RelativeLayout>

logcat 在 rl_albaran_invoices_row.setOnClickListener... 行中显示错误 NullPointerException。我做错了什么?

注意:我是从片段中执行此操作的。

【问题讨论】:

  • albaran_invoices_row.xml 不包含 ID 为 rl_albaran_invoices_row 的项目
  • 我添加了 albaran_invoices_row.xml(简体)
  • 仔细检查R.id.rl_albaran_invoices_row是否正确
  • 是正确的,我会敲我的键盘这么强! :( 我不知道发生了什么。

标签: android android-layout nullpointerexception layout-inflater dynamically-generated


【解决方案1】:

似乎“newGratLayout”视图为空。调试代码,这样你就会明白了。

【讨论】:

    【解决方案2】:

    我已更改视图类型以解决问题:

    我有...

    //View newGratLayout = LayoutInflater.from(getActivity()).inflate(R.layout.albaran_invoices_row, ll_invoices_layer, false);
    

    现在我有...

    RelativeLayout newGratLayout = (RelativeLayout)getActivity().getLayoutInflater().inflate(R.layout.albaran_invoices_row, null); //rl_albaran_invoices_row
    

    感谢人们如何尝试帮助我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-05
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 2016-09-29
      相关资源
      最近更新 更多