Toast
。现在,我有片段,但我需要知道在这种情况下我应该使用哪种通信技术?
答案 0 :(得分:0)
我认为你可以这样做的一种方法是通过使用每个片段中的getActivity()来通过活动进行交流,因为它们都共享相同的活动
答案 1 :(得分:0)
您可以将数据存储在MainActivity中,并从以下任何片段中读取:
//MainActivity
private String mItem = "";
public void getItem(){
return this.mItem;
}
public void addItem(String searchItem){
this.mItem += searchItem;
}
//FRAGMENT 1
public void onButtonClick(){
//adding a string to your item in the MainActivity
((MainActivity)getActivity()).addItem("String from Frag1");
}
//FRAGMENT 4
private void onButtonClick{
//reading the string
String toastMessage = ((MainActivity)getActivity()).getItem();
}
答案 2 :(得分:0)
在调用另一个片段之前,只需将代码放在下面:
Bundle bundle=new Bundle();
bundle.putString("MY_DATA", mStringData);
mFragment.setArguments(bundle);
在commit()mFragment之后。在第二个片段中,您希望使用以下数据:
String data = getArguments().getStringExtra("MY_DATA");
在您的情况下,另一种方法是,您可以使用SharedPreference 优先保存数据,如:
SharedPreference mPreference=PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
mPreferences.edit()。putString(" MY_DATA",mStringData).commit();
使用另一个片段获取此数据:
String data = mPrefrences().getStringExtra("MY_DATA");
答案 3 :(得分:0)
public interface IAddItem{ public void addItem(int fragID, String value) };
创建此界面并将其实施到您的MainActivity:
Public class MainActivity extends Activity implements IAddItem{
private String mValue;
public void addItem(int fragID, String value){
switch(fragID){
case R.id.frag_1:
mValue = value;
break;
case //Do your other code here
}
}
}
使用它在其他片段中使用它:private IAddItem mCallback;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (IAddItem) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement IAddItem");
}
}
并像这样称呼:mCallback.addItem(R.id.frag_1, text.getText().toString());