gpt4 book ai didi

android - 将监听器添加到自定义警报对话框中的按钮会使我的应用程序崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:22 25 4
gpt4 key购买 nike

我的应用程序中有一个按钮,允许我打开自定义警报对话框。这个警告对话框从一个 XML 文件中获取内容:我在其中有一个按钮(称为 filterButton)、单选按钮和一个 slider 。以编程方式,添加了另外两个按钮(确定、取消)。
当我打开对话框警报时,内容会完美显示,但到目前为止还没有创建任何事件。 (因此打开警报对话框并显示内容没问题)

现在,我想为我的“filterButton”添加一个监听器。与往常一样,我以这种方式(在我的 onCreate 中)声明了我的按钮 (Button filterButton;)、setOnClickListener:

filterButton = (Button) findViewById(R.id.filter_button); 
filterButton.setOnClickListener(filter_listener);

然后我定义我的监听器:

OnClickListener filter_listener = new OnClickListener() {

@Override
public void onClick(View v) {
// showPopupMenu(v);
} };

我把里面的方法注释掉了,确保问题不是出在这个方法上。因此,自从我这样做以来,当我尝试运行我的应用程序时,当我尝试打开打开警报对话框的按钮所在的 Activity 时,它就会崩溃。当我取消这几行时,它又可以工作了。我不明白,这没有意义,它只是一个带有监听器的按钮,我有几十个这样的,没问题,那么为什么它在我的警报对话框中时会出现问题?

ps:我的logcat一如既往的没用,只说Fatal Error和nullpointerexception,没有任何细节。

编辑:我按照下面的建议更改为:

filterButton = (Button) alertDialog.findViewById(R.id.filter_button);
filterButton.setOnClickListener(filter_listener);

我把它放在这里是因为如果放在程序的开头,它会用红色下划线显示 alertDialog,但它仍然会崩溃:

OnClickListener dialog_listener = new OnClickListener() {

@Override
public void onClick(View v) {

LayoutInflater myLayout = LayoutInflater.from(context);
View dialogView = myLayout.inflate(R.layout.alertdialog_filter, null);

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);


Bundle bundle = getIntent().getExtras();
int filterVariable = bundle.getInt("filterVariable");

alertDialogBuilder.setTitle("Filter Mode");

alertDialogBuilder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

}
});


alertDialogBuilder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

}
});

// set alertdialog_filter.xml to alertdialog builder
alertDialogBuilder.setView(dialogView);

// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();

filterButton = (Button) alertDialog.findViewById(R.id.filter_button);
filterButton.setOnClickListener(filter_listener);



// show it
alertDialog.show();
}
};

不同的是,现在它不会在我打开 Activity 时崩溃,而是在我点击应该打开警报对话框的按钮时崩溃。

最佳答案

您必须从对话框 XML 文件中获取按钮,如下面的代码

filterButton = (Button) dialog.findViewById(R.id.filter_button); 

关于android - 将监听器添加到自定义警报对话框中的按钮会使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15629210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com