其他分享
首页 > 其他分享> > Android popupWindow,无法在弹出窗口中获取元素

Android popupWindow,无法在弹出窗口中获取元素

作者:互联网

我有一个问题,从我的PopupWindow中抓取我的按钮和其他元素,使用它只报告为null的调试器?

private void initiatePopupWindow() 
        { 
            try 
                { 
                    // We need to get the instance of the LayoutInflater 
                    LayoutInflater inflater = (LayoutInflater) LoginActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
                    View layout = inflater.inflate(R.layout.activity_register,(ViewGroup)

                    findViewById(R.id.popup_element)); 
                    pwindo = new PopupWindow(layout, 600, 900, true);
                    pwindo.showAtLocation(layout, Gravity.CENTER, 0, 0);

                    btnReg = (Button) findViewById(R.id.btnReg);
                    inputName = (EditText) findViewById(R.id.name);
                    inputDOB = (DatePicker) findViewById(R.id.dob);
                    String name = inputName.getText().toString();

                    btnReg.setOnClickListener(new View.OnClickListener()
                    {
                        @Override
                        public void onClick(View v)
                        {


                            if (  ( !inputName.getText().toString().equals("")) &&
                                    ( getAge(inputDOB.getDayOfMonth(), inputDOB.getMonth(), inputDOB.getYear()) > 15) )
                            {
                                //register user
                            }
                            else if ( ( inputName.getText().toString().equals("")) )
                            {
                                Toast.makeText(getApplicationContext(),
                                        "Please enter your name", Toast.LENGTH_SHORT).show();
                            }
                            else if (( getAge(inputDOB.getDayOfMonth(), inputDOB.getMonth(), inputDOB.getYear()) < 16) )
                            {
                                Toast.makeText(getApplicationContext(),
                                        "You must be at least 16 to use this app", Toast.LENGTH_SHORT).show();
                            }
                            else
                            {
                              Toast.makeText(getApplicationContext(), email, Toast.LENGTH_SHORT).show();



                            }

                        }
                    });
                }
            catch (Exception e)
            { 
                e.printStackTrace(); 
            } 
        }

任何人都可以指出我正确的方向或解释为什么我不能使用R.id找到它们?

干杯

更新:Activity_Register.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
               android:id="@+id/popup_element" 
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent" 
                android:background="@drawable/rounded"
                android:orientation="vertical" 
                android:padding="10sp" >

    <EditText
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:hint="@string/name"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true">

        <requestFocus />
    </EditText>

    <DatePicker
        android:id="@+id/dobPicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:calendarViewShown="false"
        android:layout_below="@+id/dob"
        android:layout_centerHorizontal="true"/>

    <TextView
        android:id="@+id/dob"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dob"
        android:layout_below="@+id/name"
        android:layout_alignParentStart="true"
        android:layout_marginTop="42dp"/>

    <Button
        android:id="@+id/btnReg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="38dp"
        android:text="@string/register"
        android:layout_below="@+id/dobPicker"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

解决方法:

你可以这样

View layout = inflater.inflate(R.layout.activity_register,
            (ViewGroup) youractivity.this.findViewById(R.id.popup_element));

btnReg = (Button) layout.findViewById(R.id.btnReg);
inputName = (EditText) layout.findViewById(R.id.name);
inputDOB = (DatePicker) layout.findViewById(R.id.dob);

它是来自膨胀布局视图的所有元素,您需要传递上下文以将您的popup_element布局作为ViewGroup.

标签:android,android-popupwindow
来源: https://codeday.me/bug/20190528/1174600.html