2017-08-06 63 views
-2

我正在開發一個具有兩個片段的應用程序。 我需要從一個片段的EditText中將文本轉換爲另一個片段中的TextView。從EditText發送文本到兩個片段之間的TextView

我已經嘗試過一些選項,但該應用程序仍然崩潰。

第一個片段是Tab1Setup。

第二個片段是Tab2Auto。

我想:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     //TODO slide to position 
     View rootView = inflater.inflate(R.layout.tab1setup, container, false); 


     slide = (TextView) rootView.findViewById(R.id.slide); 
     textview = (TextView) rootView.findViewById(R.id.textView); 

     MatchNumber = (EditText) rootView.findViewById(R.id.MatchNumber); 
     ScouterName = (EditText) rootView.findViewById(R.id.ScouterName); 
     TeamNumber1 = (EditText) rootView.findViewById(R.id.TeamNumber); 
     TeamNumber2 = (EditText) rootView.findViewById(R.id.TeamNumber2); 
     TeamNumber3 = (EditText) rootView.findViewById(R.id.TeamNumber3); 

     Tab2Auto t2a = new Tab2Auto; 

     t2a.textview.setText(TeamNumber1.getText.toString); 

希望能幫到你。

+1

總是發佈錯誤 –

+0

'Tab2Auto t2a = new Tab2Auto;'< - 這是無效的java。另外,你不想創建一個新的'Tab2Auto'片段,而是寫入一個現有的片段。請參閱android文檔中的[與其他片段進行通信](https://developer.android.com/training/basics/fragments/communicating.html)。 – PPartisan

+1

使用Eventbus庫在兩個片段之間傳遞數據 –

回答

2

訪問另一個片段不是一個好的做法。嘗試在您的Tab1Setup中添加一個界面並在您的父項活動中實施它。然後將監聽器添加到您的EditText並調用接口的方法。然後在您的父級活動中,將Tab1Setup片段的值傳遞給Tab2Auto。有關片段和活動之間進行通信的更多信息,請參閱here

例如:

在活動

public class YourParentActivity extends AppCompatActivity 
    implements Tab1Setup.OnInteractionListener { 
      // activity code 
      ... 
      // when adding second fragment 
      mSecondFragment = Tab2Auto.newInstance(); 
      getFragmentManager() 
       .beginTransaction() 
       .add(R.id.container_id, mSecondFragment) 
       .commit(); 
      ... 


      // this is first fragment interface method 
      @Override 
      public void onEditTextValueChanged(String value) { 
       mSecondFragment.updateValue(value); 
      } 
} 

並在片段:

public class Tab1Setup extends Fragment { 
    private OnInteractionListener mListener; 
    // fragment code 

    ... 
    // inside your listener for edit text value 
    mListener.onEditTextValueChanged(value); 
    ... 



    public interface OnInteractionListener { 
      void onEditTextValueChanged(String newValue); 
    } 
} 

public class Tab2Auto extends Fragment { 
    // fragment code 
    public void updateValue(String value) { 
     mTextView.setText(value); 
    } 
} 
+0

您可以告訴我一個代碼示例嗎? –

+0

檢查我的更新答案。 –

1

通過意圖從片段將數據發送到活動,在活動接收數據。 再次開始意圖將數據從一個活動發送到另一個活動。 然後將這些數據從活動發送到片段。 獲取片段的oncreateview中的數據。

代碼snippet-How to pass values between Fragments

+0

您應該在答案中解釋鏈接文檔中最重要的內容。在這種特殊情況下,您還應該在這裏添加代碼片段。 – Markus

+0

當然,這是我的第一個答案,希望你會考慮:) – soham97

+0

我只是想幫助你改進你的答案。 :)只需編輯它,它會變得更好。 :) – Markus