关闭 DialogFragment onClick 无法正常工作
Dismiss DialogFragment onClick not working properly
我有一个 dialogfragment,它的视图由一个简单的搜索栏和正负按钮组成。当我关闭 dialogfragment onclick 时,将创建并显示一个新的 dialogfragment。第二次单击按钮后,对话框被取消,但我的愿望在第一次单击后被取消。另外我应该注意到我的 activity 包含两个片段,我从第一个片段调用 dialog.show() 。
MyListFragment.java
FragmentManager manager = getFragmentManager();
fndSrchFragment dialog = new fndSrchFragment();
dialog.setTargetFragment(MyListFragment.this, REQUEST_COLOR);
dialog.show(manager, SRCH_FND);
fndSrchFragment.java
public class fndSrchFragment extends DialogFragment {
.
.
//variable definition
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.color_picker, null);
rSb=(SeekBar) view.findViewById(R.id.r_seek_bar);
.
.
//code for interacting with seekbar
.
.
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(view);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int ccolor = android.graphics.Color.rgb(rComponent, gComponent, bComponent);
sendResult(Activity.RESULT_OK, ccolor);
// two click is needed for dismiss which I don't know why?
dismiss();
}
});
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// two click is needed for dismiss which I don't know why?
dismiss();
}
});
return builder.create();
}
提前致谢。
在您的 onMenuItemActionExpand()
中设置一个日志命令。我敢打赌,您会在关闭对话框后立即看到此方法被调用。最有可能的是,一旦焦点从对话框返回到 activity,系统就会调用此方法。您应该在 onOptionsItemSelected(MenuItem item)
之类的内容中调用 dialog.show()
。
我有一个 dialogfragment,它的视图由一个简单的搜索栏和正负按钮组成。当我关闭 dialogfragment onclick 时,将创建并显示一个新的 dialogfragment。第二次单击按钮后,对话框被取消,但我的愿望在第一次单击后被取消。另外我应该注意到我的 activity 包含两个片段,我从第一个片段调用 dialog.show() 。
MyListFragment.java
FragmentManager manager = getFragmentManager();
fndSrchFragment dialog = new fndSrchFragment();
dialog.setTargetFragment(MyListFragment.this, REQUEST_COLOR);
dialog.show(manager, SRCH_FND);
fndSrchFragment.java
public class fndSrchFragment extends DialogFragment {
.
.
//variable definition
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.color_picker, null);
rSb=(SeekBar) view.findViewById(R.id.r_seek_bar);
.
.
//code for interacting with seekbar
.
.
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(view);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int ccolor = android.graphics.Color.rgb(rComponent, gComponent, bComponent);
sendResult(Activity.RESULT_OK, ccolor);
// two click is needed for dismiss which I don't know why?
dismiss();
}
});
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// two click is needed for dismiss which I don't know why?
dismiss();
}
});
return builder.create();
}
提前致谢。
在您的 onMenuItemActionExpand()
中设置一个日志命令。我敢打赌,您会在关闭对话框后立即看到此方法被调用。最有可能的是,一旦焦点从对话框返回到 activity,系统就会调用此方法。您应该在 onOptionsItemSelected(MenuItem item)
之类的内容中调用 dialog.show()
。