2016-05-17 71 views
1

我有兩個片段:第一片段中的我做:如何獲得元素重新popBackStack()

 ritorno.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      manager.beginTransaction().replace(R.id.content_frame,new SearchFlight()).addToBackStack(null).commit(); 
     } 
    }); 

,這工作得很好。在第二個我需要回到第一個片段,所以我決定這樣做:

String s = element.getText().toString(); //I need to return it 
FragmentManager manager = getActivity().getSupportFragmentManager(); 
SearchFragment fragment = new SearchFragment(); 
manager.popBackStack(); 

我需要回到第一個片段此字符串。我怎麼能這樣做? 由於

+0

[其中一個選項](http://stackoverflow.com/a/36583226/1815052) – SqueezyMo

回答

0

有3種方法

  1. 靜態變量:定義在第一片段public static變量,更新其在第二片段的值。
  2. BroadcastReceiver
  3. EventBus你甚至可以找到EventBus教程here

通字符串Br或EventBus,您可以在第一個片段通過定義適當的方法或監聽器獲取它。

+0

爲什麼你建議使用add而不是replace? – ste9206

+0

在閱讀問題時出現了一些誤解,對不起這個 –

+0

沒問題..你建議三種方法中的哪一種?公共靜態是有效的? – ste9206

-2

試着用捆綁對象來做。

String s = element.getText().toString(); //item to be returned 
FragmentManager manager = getActivity().getSupportFragmentManager(); 
SearchFragment fragment = new SearchFragment(); 
Bundle bundle = new Bundle(); 
bundle.putString("key", "value"); 
fragment.setArguments(bundle); 
manager.popBackStack(); 

,然後在你的SearchFragment解決像束:

Bundle bundle = this.getArguments(); 
bundle.getString("key"); 

執行束的分辨率一部分在你的SearchFragment的onCreateView。請對分析的分辨率部分進行空檢查。如果bundle沒有解析,那麼getString(「key」)方法會給出一個空指針異常。