5

我在Button从我的 s 中获取我的 s 和其他元素时遇到问题PopupWindow,使用debugger它只是报告为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>
4

3 回答 3

7

你可以得到喜欢

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

这是因为您的所有元素都来自inflated layout视图,您需要通过context才能将popup_element布局设置为ViewGroup.

于 2014-03-14T05:38:02.493 回答
0

尝试像这样暗示弹出窗口。

于 2014-03-14T05:54:05.257 回答
0

用这个layout.findViewById(R.id.popup_element)); instead of this findViewById(R.id.popup_element));

于 2014-03-14T05:39:04.190 回答