尝试调用虚方法'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView $ LayoutManager

时间:2017-10-04 15:46:31

标签: java android android-recyclerview

我正在尝试在我的一个自定义警报对话框中实施RecyclerView。它崩溃了,名为

Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference 

在这一行

hsv_font_bartextview.setLayoutManager(layoutManager);

我的自定义对话功能代码如下

private void showGotoPageDialog() {

        final Dialog mDialog = new Dialog(SettingsActivity.this);
        mDialog.setContentView(R.layout.font_dialogue);
        mDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        LinearLayoutManager layoutManager
                = new LinearLayoutManager(SettingsActivity.this, LinearLayoutManager.HORIZONTAL, false);
        hsv_font_bartextview=(RecyclerView)findViewById(R.id.hsv_font_bartextview);
        hsv_font_bartextview.setLayoutManager(layoutManager);


        TextAdapterTextview textAdaptertextview = new TextAdapterTextview(SettingsActivity.this, Globle.getFontArray());
        hsv_font_bartextview.setAdapter(textAdaptertextview);
        textAdaptertextview.setOnClickLIstner(new OnTClickLIstner() {
            @Override
            public void onClick(View v, String image, int position) {
                Toast.makeText(SettingsActivity.this,image,Toast.LENGTH_SHORT).show();

            }
        });

        mDialog.show();
        TextView dismiss = (TextView) mDialog.findViewById(R.id.dialog_dismiss);
        dismiss.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mDialog.dismiss();
            }
        });
    }

如果有人可以帮我解决问题,请告诉我。感谢

1 个答案:

答案 0 :(得分:3)

hsv_font_bartextview=(RecyclerView)findViewById(R.id.hsv_font_bartextview);

findViewById()会返回null,因为您的活动没有包含该ID的小部件。您的对话框可能,但对话框不是活动。如果findViewById()位于对话,请致电hsv_font_bartextview