2017-08-06 17 views
0

カスタムalertdilogのボタンのクリックイベントからフラグメントを表示しようとしていますが、アラートダイアログがフラグメントのアダプタにあり、alertdialogボタンのクリックからフラグメントを表示したかったのですが、そうするために。カスタムalertdialogからフラグメントを表示する方法、アラートダイアログがアダプタにあります

alertdialogコード:

holder.commentButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

         AlertDialog.Builder builder=new AlertDialog.Builder(context); 
         final AlertDialog alertDialog=builder.create(); 

         View viewTmp_comment=LayoutInflater.from(context).inflate(R.layout.comment_show_layout,null,false); 
         RecyclerView recyclerView_commentShow=(RecyclerView)viewTmp_comment.findViewById(R.id.recyclerViewId_commentShow); 
         TextView textViewId_commentShow_layout=(TextView)viewTmp_comment.findViewById(R.id.textViewId_commentShow_layout); 
         ImageButton commentSendButtonId_Post=(ImageButton)viewTmp_comment.findViewById(R.id.commentSendButtonId_Post); 
         ImageButton imageUpload_CommentButton=(ImageButton)viewTmp_comment.findViewById(R.id.imageUploadButtonId_comment); 
         ImageButton smileyUpload_CommentButton=(ImageButton)viewTmp_comment.findViewById(R.id.smileyButtonId_comment); 
         editTextId_CommentPost=(EditText) viewTmp_comment.findViewById(R.id.editTextId_CommentPost); 
    //    RelativeLayout smileyLoadLayoutId_CommentAdapter=(RelativeLayout) 

         final CommentShowAdapter commentShowAdapter=new CommentShowAdapter(context,newsFeedClassArrayList.get(position).getCommentShowClassArrayList(),"NewsFeed"); 
         LinearLayoutManager linearLayoutManager=new LinearLayoutManager(context); 
         recyclerView_commentShow.setLayoutManager(linearLayoutManager); 
         if(newsFeedClassArrayList.get(position).getCommentShowClassArrayList()!=null) { 
          recyclerView_commentShow.setAdapter(commentShowAdapter); 

          DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, linearLayoutManager.getOrientation()); 
          recyclerView_commentShow.addItemDecoration(dividerItemDecoration); 
          commentShowAdapter.notifyDataSetChanged(); 
          recyclerView_commentShow.onChildDetachedFromWindow(null); 
         }else { 
          builder.setMessage("No comments yet"); 
         } 

        //comment show alert dismiss 
        textViewId_commentShow_layout.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          try { 
           if(alertDialog.isShowing()){ 
            alertDialog.dismiss(); 
           } 
          }catch (Exception e){} 
         } 
        }); 


**//here i am trying to lauch fragment** 
        smileyUpload_CommentButton.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          ServiceClass.setSmileyKey("comment"); 

          smileyFragment=new SmileyShowFragment(); 

          FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction(); 
          Fragment fragment = fragmentManager.findFragmentById(R.id.smileyLoadLayoutId_CommentAdapter); 

          if (!(fragment instanceof SmileyShowFragment)) { 

           fragmentTransaction.replace(R.id.smileyLoadLayoutId_CommentAdapter, smileyFragment, "Smiley").commit(); 
          } else { 

           fragmentTransaction.remove(smileyFragment).commit(); 

          } 
         } 
        }); 

         WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
         Window window = alertDialog.getWindow(); lp.copyFrom(window.getAttributes()); 
         lp.width = context.getResources().getDisplayMetrics().widthPixels; 
         lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 
         lp.gravity=Gravity.BOTTOM; window.setAttributes(lp); 

         alertDialog.setView(viewTmp_comment); 
         alertDialog.show(); 
       } 
      }); 

警告XMLコード:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#ddd" 

    > 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:id="@+id/textViewId_commentShow_layout" 
     android:text="Comments" 
     android:textSize="16sp" 
     android:paddingLeft="20dp" 
     android:textStyle="bold" 
     android:paddingTop="10dp" 
     /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/underline"/> 

    <android.support.v7.widget.RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:id="@+id/recyclerViewId_commentShow" 
     > 

    </android.support.v7.widget.RecyclerView> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:orientation="horizontal" 
     android:weightSum="4" 
     android:background="#1470a6" 
     > 

     <ImageButton 
      android:layout_width="30dp" 
      android:layout_height="30dp" 
      android:background="@drawable/camera" 
      android:id="@+id/imageUploadButtonId_comment" 
      android:layout_gravity="center" 
      android:layout_marginLeft="8dp" 
      android:layout_marginRight="5dp" 
      /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/smileyButtonId_comment" 
      android:src="@drawable/smiley" 
      android:layout_gravity="center" 
      /> 

     <EditText 
      android:layout_width="wrap_content" 
      android:layout_height="60dp" 
      android:id="@+id/editTextId_CommentPost" 
      android:layout_weight="3" 
      android:background="#FFFFFF" 
      android:hint="Your comment" 
      android:textSize="16sp" 

      /> 

     <ImageButton 
      android:layout_width="30dp" 
      android:layout_height="match_parent" 
      android:id="@+id/commentSendButtonId_Post" 
      android:src="@drawable/send_comment" 
      android:background="#1470a6" 
      android:gravity="right" 
      android:layout_gravity="right" 
      android:layout_weight="1" 
      /> 

    </LinearLayout> 
    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/smileyLoadLayoutId_CommentAdapter" 
     > 
    </FrameLayout> 
</LinearLayout> 

どのようにこの問題を解決するには? alertdialogの中に断片を表示することが可能です.iはGoogleで検索しましたが、似たような解決策はありません。

答えて

0

別のカスタマイズされたダイアログを作成する必要があります。これを行うには、DialogFragmentを拡張し、onCreateDialog()でビューと適切な割り当てを設定します。フラグメントを内側にして、カスタマイズしたダイアログフラグメントクラスのレイアウトを作成します。カスタマイズしたダイアログにインターフェイスを作成して、ボタンのクリックやその他の操作を聞くことができます。次に、あなたのボタンのonClickはフラグメントマネージャ内のフラグメントを表示するためにフラグメントマネージャを使用します。以下のような何か:

//はそれを使用すると、1つ以上か、ホルダーを必要としない場合は、ちょうどあなたのレイアウト にフラグメントを追加してより多くのを保持する必要が 場合の断片を保持するためでframeLayoutとのフラグメントを与えます。

public class MyCustomizedDialog extends DialogFragment{ 

private TextView dialogTitle; 
private TextView dialogText; 
private FrameLayout myFragmentContainer; 
private Button myButton; 
private CustomDialogListener customDialogListener; 

public interface CustomDialogListener{ 
    //set listeners here, i.e. for buttons clicked by user 
    public void onBtnClick(); 
} 

public setDialogFragmentListener(CustomDialogListener customDialogListener){ 
    this.customDialogListener = customDialogListener; 
} 
@override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    //initialize dialog 
    setUpMyCustomDialog(dialog); 
    return dialog; 
} 

public void setUpMyCustomDialog(Dialog dialog){ 
    dialogTitle = (TextView)dialog.findViewById(R.id.dialog_title_tv); 
    dialogText = (TextView)dialog.findViewById(R.id.dialog_text_tv); 
    myFragmentContainer=(FrameLayout)dialog.findViewById(R.id.child_fragment_container); 
    myButton = (Button)dialog.findViewById(R.id.myButton); 

    myButton.setOnClickListener(new OnClickListener(){ 
     public void onClick(View view) { 
     //initialize your fragment here. 
     } 
    } 

} 

}

+0

私alertdialogは – AAA

+0

可能であればあなたは?私のコードをしてください編集することができ、カスタマイズされました – AAA

関連する問題