2016-05-11 70 views
-1

如何在一個活動中將數據發送到另一個片段?如何在一個活動中將數據發送到另一個片段?

我有兩個使用Android Studio設計視圖編輯器創建的片段。我在我的MainActivity上創建了這兩個片段。 fragment1是第一個片段的ID,它只包含EditText和一個按鈕。 fragment2是第二個片段的ID,它只包含textView。

如何將fragment1的EditText中的數據發送到fragment2的textView?

我在下面寫了一些代碼,請檢查它。

MainActivity.java

package com.example.radioswiba.belajar2buahfragment; 

import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 

public class MainActivity extends AppCompatActivity implements Fragment1.OnFragmentInteractionListener, Fragment2.OnFragmentInteractionListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public void onFragmentInteraction(Uri uri) { 

    } 
} 

Fragment1.java

//this code was generated by Android Studio 
//i have deleted some unused code and comments 

package com.example.radioswiba.belajar2buahfragment; 

import android.content.Context; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 


public class Fragment1 extends Fragment { 

    //let's define some of variable 
    private EditText text_input; 
    private Button button_send; 

    private OnFragmentInteractionListener mListener; 

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

    //this generated by Android Studio 
    public static Fragment1 newInstance(String param1, String param2) { 
     Fragment1 fragment = new Fragment1(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    //this generated by Android Studio 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     // my code here 
     View rootView = inflater.inflate(R.layout.fragment_fragment1, container, false); 
     text_input = (EditText) rootView.findViewById(R.id.status_text); 
     button_send = (Button) rootView.findViewById(R.id.post_btn); 
     button_send.setOnClickListener(postStatus); 
     return rootView; 
    } 

    View.OnClickListener postStatus = new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      text_of_me = text_input.getText().toString(); 
      // 
      //WHAT SHOULD I WRITE HERE? 
      //SHOULD I USED BUNDLE? 


     } 
    }; 

    // TODO: Rename method, update argument and hook method into UI event 
    public void onButtonPressed(Uri uri) { 
     if (mListener != null) { 
      mListener.onFragmentInteraction(uri); 
     } 
    } 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnFragmentInteractionListener) { 
      mListener = (OnFragmentInteractionListener) context; 
     } else { 
      throw new RuntimeException(context.toString() 
        + " must implement OnFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

    public interface OnFragmentInteractionListener { 
     // TODO: Update argument type and name 
     void onFragmentInteraction(Uri uri); 
    } 
} 

Fragment2.java

//the code almost same with Fragment1.java 

我有在stackoverflow上搜索類似的quenstion,但我無法弄清楚。我發現有很多的解決方案如下圖所示:

Fragment fragment = new Fragment(); 
Bundle bundle = new Bundle(); 
bundle.putInt(key, value); 
fragment.setArguments(bundle); 

在那裏,我們創建一個新片段,同時,我也對我的活動兩個碎片,我從文件中手動創建 - >新建 - 從機器人工作室菜單>新片段。我應該使用上面的代碼創建新的片段嗎?

回答

相關問題