Android popupWindow, cant get elements within popup

狂风中的少年 提交于 2019-12-31 01:11:48

问题


I am having an issue with grabbing my Buttons and other elements from within my PopupWindow, using the debugger it just report back as 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(); 
            } 
        }

Could anyone point me in the correct direction or explain why I can't find them using R.id?

Cheers

Update: 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>

回答1:


You can get like

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);

It's becoz your all the elements coming from inflated layout view and you need to pass context to get your popup_element layout as ViewGroup.




回答2:


use this layout.findViewById(R.id.popup_element)); instead of this findViewById(R.id.popup_element));




回答3:


try to impliment popupwindow like this.



来源:https://stackoverflow.com/questions/22396969/android-popupwindow-cant-get-elements-within-popup

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!