[英]How to send data from DialogFragment to DialogFragment?
I have a problem with sending data from fragment to fragment. 我在片段之间发送数据时遇到问题。 I have DialogFragment
named fmonday
, it is Viewpager's fragment. 我已经DialogFragment
命名fmonday
,它是Viewpager的片段。
I call other DialogFragment
, named AlertDFragment
to add some data to my fragment. 我呼吁其他DialogFragment
,命名AlertDFragment
一些数据添加到我的片段。 I can read the data from spinner, it's working good. 我可以从微调器中读取数据,效果很好。
Now I need to send one variable, type string
, from AlertDFragment
to fmonday
. 现在,我需要将一个类型为string
变量从AlertDFragment
发送到fmonday
。
Here is the code of fmonday
: 这是fmonday
的代码:
public class fmonday extends DialogFragment implements LoaderManager.LoaderCallbacks<Cursor> {
DB db;
Button button12;
DialogFragment dlg1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dlg1 = new AlertDFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fmonday, container, false);
button12 = (Button) rootView.findViewById(R.id.button12);
button12.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
dlg1.show(getFragmentManager(), "dlg1");
}
});
return rootView;
}
And code of AlertDFragment
: 和AlertDFragment
代码:
public class AlertDFragment extends DialogFragment {
Spinner spin;
DB db;
String string1;
Button button13;
private String namestr;
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder adb = new AlertDialog.Builder(getActivity());
LayoutInflater li = LayoutInflater.from(getActivity());
View fdfS = li.inflate(R.layout.fdf, null);
adb.setView(fdfS);
spin=(Spinner)fdfS.findViewById(R.id.spinner);
db = new DB(getActivity());
db.open();
spin.setOnItemSelectedListener(new OnSpinnerItemClicked());
loadSpinnerData();
button13 = (Button) fdfS.findViewById(R.id.button13);
button13.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(getActivity().getApplicationContext(), "Clicked : " +
string1, Toast.LENGTH_LONG).show();
getDialog().dismiss();
}
});
return adb.create();
}
I can't find the way to send this string1
variable to my fmonday
DialogFragment, because simple intent
doesn't work with non-activity things. 我找不到将这个string1
变量发送到我的fmonday
DialogFragment的方法,因为简单的intent
不适用于非活动性的事物。 Also read some advices about bundle
, but couldn't find out how to work with it. 还阅读了有关bundle
一些建议,但找不到如何使用它。
Thanks 谢谢
UPDATE fmonday
: fmonday
更新 :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dlg1 = new AlertDFragment();
string1 = getArguments().getString("latitude");
}
AlertDFragment
: AlertDFragment
:
public class AlertDFragment extends DialogFragment {
Spinner spin;
DB db;
String string1;
Button button13;
private String namestr;
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder adb = new AlertDialog.Builder(getActivity());
LayoutInflater li = LayoutInflater.from(getActivity());
View fdfS = li.inflate(R.layout.fdf, null);
adb.setView(fdfS);
spin=(Spinner)fdfS.findViewById(R.id.spinner);
db = new DB(getActivity());
db.open();
spin.setOnItemSelectedListener(new OnSpinnerItemClicked());
loadSpinnerData();
button13 = (Button) fdfS.findViewById(R.id.button13);
button13.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(getActivity().getApplicationContext(), "Clicked : " +
string1, Toast.LENGTH_LONG).show();
Bundle bundle = new Bundle();
bundle.putString("latitude", string1);
fmonday alertdfragment= new fmonday();
alertdfragment.setArguments(bundle);
getDialog().dismiss();
}
});
return adb.create();
}
To Set Data: 设置数据:
Bundle bundle = new Bundle();
bundle.putString("latitude", latitude);
MapFragment mapFragment = new MapFragment();
mapFragment.setArguments(bundle);
To Get Data 获取数据
String latitude = getArguments().getString("latitude")
You can crate a setter to your second dialogFragment ex: 您可以将设置器创建到第二个dialogFragment ex:
public void setSmth(String value)
{
this.myData = value;
}
, than on your first dialog ,而不是第一个对话框
DialogFragment dlg1 = new AlertDFragment();
dlg1.setSmth(your data here);
before showing the second one; 在显示第二个之前;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.