0

我有一个dialogfragment,它的视图由一个简单的seekbar和正面和负面的按钮组成。当我点击onclick dialogfragment时,会创建并显示一个新的对话框片段。第二次点击按钮后,对话框被解除,但我的愿望是第一次点击后解​​散。另外我应该注意到我的活动主持了两个片段,我从第一个片段调用dialog.show()。关闭DialogFragment onClick不能正常工作

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(); 
} 

预先感谢您。

+0

我也遇到过这个问题,不知道为什么....如果使用dialog.dismiss(); ? – Opiatefuchs

+0

谢谢@Opiatefuchs。它没有任何作用(使用dialog.dismiss())。 –

+0

'return builder.create()'...你在方法里面创建对话框吗?你没有发布那个... – Opiatefuchs

回答

1

在您的onMenuItemActionExpand()中设置日志命令。我敢打赌,你会看到这种方法是在你解散对话之后调用的。很可能,一旦焦点从对话返回到活动,系统就会调用此方法。您应该拨打dialog.show(),而不是onOptionsItemSelected(MenuItem item)

+0

谢谢@JCricket。这可能是问题的起因。我将测试日志输出。 –

+0

谢谢@JCricket。工作! –