[英]Custom Dialog onClick error
這是對話框的dialog_date_range.xml布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:foo="http://schemas.android.com/apk/res/com.example.database_fragment"
android:id="@+id/dialog_body"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:onClick="toggleDateRange"
android:text="Button" />
</LinearLayout>
在我的活動中我有:
public void toggleDateRange(View v) {
if(dialog == null) {
dialog = new Dialog(context, R.style.PauseDialogAnimation);
dialog.setCancelable(true);
dialog.setContentView(R.layout.dialog_date_range);
dialog.getWindow().getAttributes().windowAnimations = R.style.PauseDialogAnimation;
}
if(dialog.isShowing()) {
dialog.dismiss();
} else {
dialog.show();
}
}
這是我點擊按鈕時得到的錯誤:
FATAL EXCEPTION: main E/AndroidRuntime(25357): java.lang.IllegalStateException:
Could not find a method toggleDateRange(View) in the activity class
android.view.ContextThemeWrapper for onClick handler on view class
android.widget.Button
with id 'button1'at android.view.View$1.onClick(View.java:3586)
吻 - 保持簡單愚蠢(對不起,最后一句話:P)
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:text="Button" />
實現onClickListener
Button btn1 = (Button)findViewById(R.id.button1);
btn1.setonClickListener(this);
//實現的方法
@Override
public void onClick(View v) {
switch(v.getId){
case R.id.button1:{
//do here whatever you want
}
}
}
或者,如果您真的想要這樣,那么來自setContentView的VIEW就不是正確的。 我創建了一個新項目並添加了完全相同的代碼,它可以工作。 檢查您是否在視圖中設置按鈕。
根據這個答案,Android無法在對話框中找到活動的方法。 所以解決方案就是為按鈕設置onClickListener: java.lang.illegalstateexception在activity類的android片段中找不到方法(view)
將您的代碼更改為:
public void toggleDateRange(View v)
{
if (dialog == null)
{
dialog = new Dialog(this, R.style.AppBaseTheme);
dialog.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
toggleDateRange(v);
}
});
dialog.setCancelable(true);
dialog.setContentView(R.layout.dialog_date_range);
dialog.getWindow().getAttributes().windowAnimations = R.style.AppBaseTheme;
}
if (dialog.isShowing())
{
dialog.dismiss();
}
else
{
dialog.show();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.