2017-03-16 63 views
-4

目前我正在處理片段,所以我想知道是否可以將數據從片段傳遞到片段而不觸及活動。是否有可能將數據從片段傳遞到片段而沒有觸及活動android

+1

你是什麼意思?請解釋清楚 –

+0

歡迎來到[Stack Overflow](http://stackoverflow.com/)!請閱讀[如何提問](http://stackoverflow.com/help/how-to-ask)並提供[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) ! –

+0

[如何保留片段之間的數據]可能的重複(http://stackoverflow.com/questions/21329670/how-to-retain-data-between-fragments) – Yatin

回答

0

使用捆綁發送字符串:

//Put the value 
YourNewFragment ldf = new YourNewFragment(); 
Bundle args = new Bundle(); 
args.putString("YourKey", "YourValue"); 
ldf.setArguments(args); 
//Inflate the fragment 
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit(); 

在onCreateView新片段的:

//Retrieve the value 
String value = getArguments().getString("YourKey"); 
0

有很多方法可以做到這個數字。其中之一是通過像這樣的參數發送數據:

private int data; 
private static String PARAM_MY = "param"; 

public static MyFragment newInstance(int data) { 
    MyFragment fragment = new MyFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(PARAM_MY , data); 
    fragment.setArguments(args); 
    return fragment; 
} 

,您可以retreive它的onCreate():

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (getArguments() != null) { 
     data = getArguments().getInt(PARAM_MY); 
    } 
} 

另一種方法是使用Interfaces

0

我不這麼認爲。每個片段都附加到一個活動中,兩個片段之間沒有直接連接,除非它們連接到相同的活動。如果要在片段之間進行通信,則必須定義接口內部片段,並使附加活動實現接口。在附加的活動中,您有兩個片段實例,因此您可以在片段之間傳遞(使用活動)數據。它嚴格按照最佳實踐建議,看看文檔的細節:

https://developer.android.com/training/basics/fragments/communicating.html

0

如果活動是一樣的,你可以保持數據的活動。

活動

public class MyActivity extends Activity { 

    private MyObject myObject = new MyObject(); 

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

    public MyObject getMyObject() { 
     return myObject; 
    } 
} 

片段

public class MyFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     MyActivity activity = (MyActivity) getActivity(); 
     MyObject myObjectFromActivity = activity.getMyObject(); 
     return view; 
    } 
} 
0

的主要問題是什麼是你想達到和你想傳遞什麼樣的數據?

我爲工作而編寫的一個應用程序使用主要活動來保存所有控制器,以便可以從任何視圖,或框架或關聯控制器輕鬆訪問它們。一個很好的例子就是擁有所有共享應用程序數據的數據控制器。

您是否想要傳遞字符串和整數或更復雜的對象?