2017-04-27 52 views
0

我想從包含一些TextViews的底部工作表的值傳遞給一個片段。 我的片段包含一個EditText字段和一個浮動操作按鈕。當用戶點擊浮動操作按鈕時,底部工作表顯示其中有多個TextView,當用戶單擊底部工作表上的任何textView時,值或該TextView的字符串應該顯示在片段的editText字段中,並且底部表單應該被解除。如何將數據從底部表單傳遞到android中的片段?

我已經嘗試在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

public static final String SOME_INTENT_FILTER_NAME = "SOME_INTENT_FILTER_NAME"; 

在您的片段:

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

在你bottomsheet:

Intent someIntent = new Intent(SOME_INTENT_FILTER_NAME); 
//TODO put extras to your intent 
LocalBroadcastManager.getInstance(context).sendBroadcast(someIntent); 
相關問題