getLayoutInflater() 以及findViewById(R.id.outerlayout)区别

mainLayout = (LinearLayout) getLayoutInflater().inflate(

                R.layout.calendar_main, null);   通过这种方式初始化布局文件; 其中R.layout.calendar_main 是个在layout 下面的布局文件;



觉得 getLayoutInflater()  这种就是直接加载布局文件; 返回的是一个vew 对象;
 一般是R.layout.id;  通过这种方式找到的一般就是个布局文件; 比如LinearLayout;

而findview by id 是 可以是  activity.findview by id()  也可以是  view.findviewbyid;  这种可以返回一个 布局文件; 比如LinearLayout 或者是一个TextView 等等;

似乎可以是它的孩子或者是孩子的孩子的id; 具体的下面的例子自己体会下;



public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.rili);
        // --------------begin--------
        // LinearLayout calendarLayout = (LinearLayout) getLayoutInflater()
        // .inflate(R.id.right, null); // 通过这种方式初始化布局文件;

        LinearLayout global = (LinearLayout) getLayoutInflater().inflate(
                R.layout.activity_main, null);
        // 其中R.layout.calendar_main
        // 是个在layout 下面的布局文件;
        LinearLayout relativeLayout = (LinearLayout) global
                .findViewById(R.id.outerlayout);

        LinearLayout rili = (LinearLayout) getLayoutInflater().inflate(
                R.layout.rili, null); // 通过这种方式初始化布局文件;
        relativeLayout.addView(rili);
        // global.addView(rili);
        // 其中R.layout.calendar_main
        // 是个在layout 下面的布局文件;
        setContentView(global);

        gestureDetector = new GestureDetector(this);
        flipper = (ViewFlipper) findViewById(R.id.flipper);
        flipper.removeAllViews();
        calV = new CalendarView(this, getResources(), jumpMonth, jumpYear,
                year_c, month_c, day_c);

        addGridView();
        gridView.setAdapter(calV);
        flipper.addView(gridView, 0);

        topText = (BorderText) findViewById(R.id.toptext);
        addTextToTopTextView(topText);

    }

constraintLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 获取列内容 String code = ((TextView) v.findViewById(R.id.code)).getText().toString(); String name = ((TextView) v.findViewById(R.id.name)).getText().toString(); String spec = ((TextView) v.findViewById(R.id.spec)).getText().toString(); String composition = ((TextView) v.findViewById(R.id.composition)).getText().toString(); String weight = ((TextView) v.findViewById(R.id.weight)).getText().toString(); // 创建弹窗布局 View popupView = getLayoutInflater().inflate(R.layout.showlist, null); // 获取弹窗布局中的控件 TextView titleView = popupView.findViewById(R.id.title); TextView contentView = popupView.findViewById(R.id.content); // 设置弹窗标题和内容 titleView.setText(name); contentView.setText("Code: " + code + "\n" + "Spec: " + spec + "\n" + "Composition: " + composition + "\n" + "Weight: " + weight); // 创建弹窗 PopupWindow popupWindow = new PopupWindow(popupView, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT); // 设置弹窗的背景和动画 popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); popupWindow.setAnimationStyle(R.style.PopupAnimation); // 显示弹窗 popupWindow.showAtLocation(v, Gravity.CENTER, 0, 0); } });java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.constraintlayout.widget.ConstraintLayout.setOnClickListener(android.view.View$OnClickListener)' on a null object reference怎么解决
06-05
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值