2017-04-27 2 views
0

いくつかのTextViewを含むボトムシートから値をフラグメントに渡そうとしています。 私のフラグメントには、EditTextフィールドとFloatingアクションボタンが含まれています。ユーザがフローティングアクションボタンをクリックすると、下部シートがTextViewの数を表示します。値またはそのTextViewの文字列が、フラグメントのeditTextフィールドに表示され、下のシートが破棄されます。下部シートのデータをアンドロイドのフラグメントに渡すにはどうすればいいですか?

私はsetOnShowListenerメソッド内でonClickListenerを実装しようとしましたが、動作していないようです。

Fragment_TextPropert1_EditText.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.sumitroy.TextProperty1_EditText" 
    > 
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:cardCornerRadius="15dp" 
     android:padding="15dp" 
     android:layout_below="@+id/view" 
     android:layout_marginTop="10dp" 
     app:cardUseCompatPadding="true" 
     android:id="@+id/view2"> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:inputType="textMultiLine" 
      android:hint="Enter Your Comments Here.." 
      android:id="@+id/userText" 
      android:layout_centerVertical="true" 
      android:layout_centerHorizontal="true" /> 

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

<ImageButton 
     android:layout_width="65dp" 
     android:layout_height="65dp" 
     android:id="@+id/example_Ads" 
     android:background="@drawable/oval" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_marginBottom="20dp" 
     android:layout_marginRight="15dp" 
     android:src="@drawable/double_plus" 
    /> 


</RelativeLayout> 

TextProperty1_bottomsheet.xml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> 


    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    app:cardCornerRadius="15dp" 
    android:padding="15dp" 
    android:layout_marginTop="15dp" 
    app:cardUseCompatPadding="true" 
    android:id="@+id/view1"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Comment1" 
     android:id="@+id/example_Ad1" 
     android:padding="10dp" 
     android:textStyle="bold" 
     android:textSize="14sp" 
     android:layout_below="@+id/view" 
     android:layout_alignParentStart="true" /> 

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

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:cardCornerRadius="15dp" 
     android:padding="15dp" 
     android:layout_marginTop="10dp" 
     app:cardUseCompatPadding="true" 
     android:layout_below="@+id/view1" 
     android:id="@+id/view2"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="Comment 2" 
      android:id="@+id/example_Ad2" 
      android:padding="10dp" 
      android:textStyle="bold" 
      android:textSize="14sp" 
      android:layout_below="@+id/view" 
      /> 

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

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:cardCornerRadius="15dp" 
     android:padding="15dp" 
     android:layout_marginTop="15dp" 
     app:cardUseCompatPadding="true" 
     android:id="@+id/view3" 
     android:layout_below="@+id/view2"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="Comment 3 " 
      android:id="@+id/example_Ad3" 
      android:padding="10dp" 
      android:textStyle="bold" 
      android:textSize="14sp" 
      android:layout_below="@+id/view" 
      /> 

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

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:cardCornerRadius="15dp" 
     android:padding="15dp" 
     android:layout_marginTop="15dp" 
     app:cardUseCompatPadding="true" 
     android:id="@+id/view4" 
     android:layout_below="@+id/view3"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="Comment 4 " 
      android:id="@+id/example_Ad4" 
      android:padding="10dp" 
      android:textStyle="bold" 
      android:textSize="14sp" 
      android:layout_below="@+id/view" 
      /> 

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

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:cardCornerRadius="15dp" 
     android:padding="15dp" 
     android:layout_marginTop="15dp" 
     app:cardUseCompatPadding="true" 
     android:id="@+id/view5" 
     android:layout_below="@+id/view4"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="Comment 5 " 
      android:id="@+id/example_Ad5" 
      android:padding="10dp" 
      android:textStyle="bold" 
      android:textSize="14sp" 
      android:layout_below="@+id/view" 
      /> 

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


</RelativeLayout> 
</ScrollView> 

TextProperty1_EditText.java

:ここ

は私のコードです

import android.app.Activity; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.design.widget.BottomSheetBehavior; 
import android.support.design.widget.BottomSheetDialog; 
import android.support.v4.app.Fragment; 
import android.view.KeyEvent; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 
import android.widget.Toast; 


/** 
* A simple {@link Fragment} subclass. 
*/ 
public class TextProperty1_EditText extends Fragment { 

    View bottomSheetView; 
    EditText editText1; 
    TextView t1; 
    BottomSheetDialog bottomSheetDialog; 
    BottomSheetBehavior bottomSheetBehavior; 
    ImageButton floatButton; 
    RelativeLayout backgroundLayout; 


    public TextProperty1_EditText() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     final View rootview= inflater.inflate(R.layout.fragment_text_property1__edit_text, container, false); 
     editText1=(EditText) rootview.findViewById(R.id.userText); 
     floatButton=(ImageButton)rootview.findViewById(R.id.example_Ads); 
     floatButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       //Toast.makeText(v.getContext(),"Floating Button Works",Toast.LENGTH_SHORT).show(); 
       bottomSheetView=getActivity().getLayoutInflater().inflate(R.layout.textproperty1_bottomsheet,null); 
       bottomSheetDialog=new BottomSheetDialog(rootview.getContext()); 
       bottomSheetDialog.setContentView(bottomSheetView); 
       bottomSheetBehavior=BottomSheetBehavior.from((View) bottomSheetView.getParent()); 
       bottomSheetDialog.show(); 

       bottomSheetDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
        @Override 
        public void onShow(DialogInterface dialog) { 
         t1=(TextView)bottomSheetView.findViewById(R.id.example_Ad1); 
         t1.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           String take1=t1.getText().toString(); 
           //Toast.makeText(bottomSheetView.getContext(),"Floating Button Works",Toast.LENGTH_SHORT).show(); 
           editText1.setText(take1); 
           bottomSheetDialog.dismiss(); 
          } 
         }); 



        } 
       }); 
       bottomSheetDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
        @Override 
        public void onDismiss(DialogInterface dialog) { 

        } 
       }); 

       bottomSheetDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
        @Override 
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
         //Toast.makeText(bottomSheetView.getContext(),"Floating Button Works",Toast.LENGTH_SHORT).show(); 
         return false; 
        } 
       }); 

      } 
     }); 


     return rootview; 
    } 

} 

答えて

2

シンプルなソリューションとして、あなたはLocalBroadcastManagerを使用することができます。あなたのbottomsheetで

private BroadcastReceiver someBroadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     //TODO extract extras from intent 
    } 
}; 
@Override 
public void onResume() { 
    super.onResume(); 
    LocalBroadcastManager.getInstance(getContext()).registerReceiver(someBroadcastReceiver, 
      new IntentFilter(SOME_INTENT_FILTER_NAME)); 
} 
@Override 
public void onPause() { 
    LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(someBroadcastReceiver); 
    super.onPause(); 
} 

Intent someIntent = new Intent(SOME_INTENT_FILTER_NAME); 
//TODO put extras to your intent 
LocalBroadcastManager.getInstance(context).sendBroadcast(someIntent); 
あなたのフラグメントで

public static final String SOME_INTENT_FILTER_NAME = "SOME_INTENT_FILTER_NAME"; 

関連する問題