0

私はダイアログフラグメントを持っており、そのビューはシンプルなシークバーと肯定と否定のボタンで構成されています。 dialogfragment onclickを閉じると、新しいダイアログフラグメントが作成されて表示されます。 2回目のボタンをクリックすると、ダイアログは閉じられますが、最初のクリック後に私の欲求が消えてしまいます。また、私のアクティビティは2つのフラグメントをホストし、最初のフラグメントから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()の中にログコマンドを設定します。このメソッドは、ダイアログを閉じた直後に呼び出されます。このメソッドは、ダイアログからアクティビティにフォーカスが戻ったときにシステムから呼び出されている可能性があります。代わりにonOptionsItemSelected(MenuItem item)のようなものの中にdialog.show()への電話をかけてください。

+0

ありがとう@JCricket。それはおそらく問題の起源です。ログ出力をテストします。 –

+0

ありがとう@JCricket。働いた!!! –

関連する問題