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