2017-03-16 64 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

的主要问题是什么是你想达到和你想传递什么样的数据?

我为工作而编写的一个应用程序使用主要活动来保存所有控制器,以便可以从任何视图,或框架或关联控制器轻松访问它们。一个很好的例子就是拥有所有共享应用程序数据的数据控制器。

您是否想要传递字符串和整数或更复杂的对象?

相关问题