Android 构建自定义AlertDialog,如何实现按钮点击?

Android 构建自定义AlertDialog,如何实现按钮点击?,android,button,listener,adapter,Android,Button,Listener,Adapter,此按钮单击完全没有响应。如何使这段代码工作 顺便说一下,我在适配器中使用了这段代码。您注册的onCLickListener是不是DialogInterface.onCLickListener?如果您在视图类中使用了onCLickListener,那么在这里就不起作用了。请再检查一下 你需要做什么 final AlertDialog builder = new AlertDialog.Builder(activity).create(); LayoutInflater factory = Layo

此按钮单击完全没有响应。如何使这段代码工作


顺便说一下,我在适配器中使用了这段代码。

您注册的
onCLickListener
是不是
DialogInterface.onCLickListener
?如果您在视图类中使用了
onCLickListener
,那么在这里就不起作用了。请再检查一下

你需要做什么

final AlertDialog builder = new AlertDialog.Builder(activity).create();
LayoutInflater factory = LayoutInflater.from(activity);
View view = factory.inflate(R.layout.inventory_item_pop_up, null);
builder.setView(view);

ImageButton discardButton = (ImageButton) view.findViewById(R.id.popup_discard);

discardButton.setClickable(true);
discardButton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        listener.remove(f);
        builder.dismiss();
    }
});

您已注册的
onCLickListener
是否为
DialogInterface.onCLickListener
?如果您在视图类中使用了
onCLickListener
,那么在这里就不起作用了。请再检查一下

你需要做什么

final AlertDialog builder = new AlertDialog.Builder(activity).create();
LayoutInflater factory = LayoutInflater.from(activity);
View view = factory.inflate(R.layout.inventory_item_pop_up, null);
builder.setView(view);

ImageButton discardButton = (ImageButton) view.findViewById(R.id.popup_discard);

discardButton.setClickable(true);
discardButton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        listener.remove(f);
        builder.dismiss();
    }
});

嗯,这很尴尬。。。代码是正确的,我只是没有调用正确的createDialog()方法。

嗯,这很尴尬。。。代码是正确的,我只是没有调用正确的createDialog()方法。

我希望这会对您有所帮助。我用这种方式实现自定义对话框

下面显示了我的updatepopup.xml



我希望这对你有帮助。我用这种方式实现自定义对话框

下面显示了我的updatepopup.xml




尝试添加
View
,然后像下面这样调用方法
discardButton.setOnClickListener(newview.onClickListener())…
tested,不起作用。它已经是一个View.OnClickListener。有一个问题,您说此代码在适配器中。您能告诉适配器中的确切位置吗?您能显示更多的代码吗?尝试添加
View
,然后像下面这样调用方法
discardButton.setOnClickListener(new View.OnClickListener())…
尝试过,但未运行。它已经是一个View.OnClickListener。有一个问题,您说此代码在适配器中。您能告诉适配器中的确切位置吗?您能显示更多的代码吗?OnClickListener不使用DialogInterface.OnClickListener。DialogInterface仅在我想向dialogwindow本身添加按钮时才起作用;这是It’对话框视图中有一个imagebutton。哎呀……还有一件事,你能试着改变这个
imagebutton discardButton=(imagebutton)视图吗?findViewById(R.id.popup\u discard);
with
imagebutton discardButton=(imagebutton)builder.findViewById(R.id.popup\u discard);
?OnClickListener不接受DialogInterface.OnClickListener.DialogInterface仅在我想向dialogwindow本身添加一个按钮时才起作用;这是对话框视图中的一个imagebutton。哎呀……还有一件事,你能尝试更改这个
imagebutton discardButton=(imagebutton)视图。findViewById(R.id.popup\u discard);
使用
图像按钮丢弃按钮=(图像按钮)builder.findViewById(R.id.popup_discard);
public void showUpdateDialog() {
    updateDialog = new Dialog(this,
            android.R.style.Theme_Translucent_NoTitleBar_Fullscreen) {
        @Override
        public void onBackPressed() {
            this.dismiss();
            loadDataAsync.execute();

        }
    };

    updateDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    updateDialog.getWindow().setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    updateDialog.setContentView(R.layout.updatepopup);
    logger.info("Network error popup on");
    updateDialog.setCancelable(true);

    ImageView dialogImage = (ImageView) updateDialog
            .findViewById(R.id.dialogheaderimageupdateupdate);

    dialogImage.setBackgroundResource(R.drawable.infoimage);

    TextView dialogMesage = (TextView) updateDialog
            .findViewById(R.id.dialogmessgetextupdate);
    TextView currVersion = (TextView) updateDialog
            .findViewById(R.id.currentversionupdate);
    TextView newVersion = (TextView) updateDialog
            .findViewById(R.id.newversionupdate);
    TextView dialogHeader = (TextView) updateDialog
            .findViewById(R.id.dialogheadertextupdate);

    newVersion.setText("Latest version: " + versionCode);
    currVersion.setText("Current version : " + currentVersionName);
    dialogMesage.setText("Would you like to update now?");
    dialogHeader.setText("A program update is available!  ");

    Button dialogOk = (Button) updateDialog
            .findViewById(R.id.dialogokbuttonupdate);
    dialogOk.setText("Update");
    dialogOk.setFocusable(true);
    dialogOk.requestFocus();
    dialogOk.setFocusableInTouchMode(true);
    dialogOk.requestFocus();

    Button dialogCancel = (Button) updateDialog
            .findViewById(R.id.dialogcancelbuttonupdate);
    dialogOk.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            updateDialog.dismiss();
            downLoad = new DownLoad();
            downLoad.execute(apkUrl.trim());
        }
    });
    dialogCancel.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            updateDialog.dismiss();
            loadDataAsync.execute();

        }
    });
    try {
        updateDialog.show();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/layoutsample"
    style="@android:style/Theme.Black.NoTitleBar.Fullscreen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/dialoghdrbg"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/dialogheaderimageupdateupdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/dialogheadertextupdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|right"
            android:layout_marginLeft="1dp"
            android:gravity="center_vertical|right"
            android:textColor="#000000"
            android:textSize="25dp"
            android:textStyle="bold" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/dialogcontentbg"
        android:gravity="center_horizontal|center_vertical"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/currentversionupdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:textColor="#ffffff"
            android:textSize="23dp" 
            android:layout_marginTop="10dp"/>

        <TextView
            android:id="@+id/newversionupdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:textColor="#ffffff"
            android:textSize="23dp" />

        <TextView
            android:id="@+id/dialogmessgetextupdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:textColor="#ffffff"
            android:textSize="23dp" 

            />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center|center_horizontal"
            android:layout_marginTop="15dp"
            android:gravity="center|center_horizontal"
            android:orientation="horizontal" android:layout_marginBottom="10dp">

            <Button
                android:id="@+id/dialogokbuttonupdate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="15dp"
                android:background="@drawable/buttonanimation"
                android:text="@string/OKButton"
                android:textSize="20dp"
                android:textStyle="bold" />

            <Button
                android:id="@+id/dialogcancelbuttonupdate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:background="@drawable/buttonanimation"
                android:text="@string/CancelButton"
                android:textSize="20dp"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>