Android 如何从片段中的警报对话框中检测按钮点击活动?
我有一个像这样的片段Android 如何从片段中的警报对话框中检测按钮点击活动?,android,android-dialogfragment,Android,Android Dialogfragment,我有一个像这样的片段 public class Dfragment extends DialogFragment { public Dfragment() { } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
public class Dfragment extends DialogFragment {
public Dfragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
ab.setMessage("Delete Everything").setTitle("DELETE DB")
.setPositiveButton("OK",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("CANCEL",new DialogInterface.OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which) { }
});
return ab.create();
}
}
我可以从片段中检测阳性/阴性,但是如何从调用它的活动中检测阳性/阴性
以下是活动中实现的代码
Dfragment frag = new Dfragment();
frag.show(getFragmentManager(),"THISDIALOG");
那么在活动中,我如何确定单击了哪个按钮
到目前为止我试过的东西
根据上面的片段代码
setPositiveButton(“OK”,null)在上述代码中被替换,但仍然不起作用
我需要修改什么代码才能使其按预期工作
编辑1:
我知道它可以通过接口实现,但我希望不用接口就可以实现。您不需要从活动中检测它。 只需编写侦听器中的任何代码,并以与调用相同的方式调用即可。例如
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
ab.setMessage("Delete Everything").setTitle("DELETE DB")
.setPositiveButton("OK",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("log", "this will log anyway");
}
})
.setNegativeButton("CANCEL",new DialogInterface.OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which) { }
});
return ab.create();
}
除此之外,如果您想做任何事情,而不是需要实现回调
祝你好运你不需要从活动中检测到它。 只需编写侦听器中的任何代码,并以与调用相同的方式调用即可。例如
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
ab.setMessage("Delete Everything").setTitle("DELETE DB")
.setPositiveButton("OK",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("log", "this will log anyway");
}
})
.setNegativeButton("CANCEL",new DialogInterface.OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which) { }
});
return ab.create();
}
除此之外,如果您想做任何事情,而不是需要实现回调
祝你好运,我有一个建议给你。你可以这样做:
public abstract class Dfragment extends DialogFragment {
public Dfragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
ab.setMessage("Delete Everything").setTitle("DELETE DB")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
onPositiveButtonClick();
}
})
.setNegativeButton("CANCEL", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
onNegativeButtonClick();
}
});
return ab.create();
}
public abstract void onPositiveButtonClick();
public abstract void onNegativeButtonClick();
}
并创建对象
Dfragment frag = new Dfragment() {
@Override
public void onPositiveButtonClick() {
}
@Override
public void onNegativeButtonClick() {
}
};
frag.show(getFragmentManager(),"THISDIALOG");
我有一个建议给你。你可以这样做:
public abstract class Dfragment extends DialogFragment {
public Dfragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
ab.setMessage("Delete Everything").setTitle("DELETE DB")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
onPositiveButtonClick();
}
})
.setNegativeButton("CANCEL", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
onNegativeButtonClick();
}
});
return ab.create();
}
public abstract void onPositiveButtonClick();
public abstract void onNegativeButtonClick();
}
并创建对象
Dfragment frag = new Dfragment() {
@Override
public void onPositiveButtonClick() {
}
@Override
public void onNegativeButtonClick() {
}
};
frag.show(getFragmentManager(),"THISDIALOG");
使用此接口
public class Dfragment extends DialogFragment {
Clicks objclick;
public Dfragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
ab.setMessage("Delete Everything").setTitle("DELETE DB")
.setPositiveButton("OK",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
obj.onclick();
}
})
.setNegativeButton("CANCEL",new DialogInterface.OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which) { }
});
return ab.create();
}
public void clicklistner(Clicks click){
objclick=click;
}
}
制作一个接口
public interface Clicks{
public void onclick();
}
从活动中调用clicklistner方法
frag.clicklistner(new....
使用此接口
public class Dfragment extends DialogFragment {
Clicks objclick;
public Dfragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
ab.setMessage("Delete Everything").setTitle("DELETE DB")
.setPositiveButton("OK",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
obj.onclick();
}
})
.setNegativeButton("CANCEL",new DialogInterface.OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which) { }
});
return ab.create();
}
public void clicklistner(Clicks click){
objclick=click;
}
}
制作一个接口
public interface Clicks{
public void onclick();
}
从活动中调用clicklistner方法
frag.clicklistner(new....
像往常一样1。获得活动,2。转换到接口3。从界面调用该方法并传递单击的按钮…可能是@Selvin编辑的我的问题的重复项。与往常一样1。获得活动,2。转换到接口3。从界面调用该方法并传递单击的按钮…可能是@Selvin编辑了我的问题。伙计,我不知道。我的问题是如何从主要活动中发现它?老兄,我不知道吗。我的问题是如何从主要活动中检测它?请仔细阅读我的问题。我不想使用界面。请仔细阅读我的问题。我不想使用接口。