我尝试通过我的活动中声明的对话框修改Fragment
中的日期,但我无法从我的活动中修改TextView
此部分在我的活动中声明
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
if (id == 999) {
return new DatePickerDialog(this,
myDateListener, year, month, day);
}
private DatePickerDialog.OnDateSetListener myDateListener = new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0,
int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
// arg1 = year
// arg2 = month
// arg3 = day
showDate(arg1, arg2+1, arg3);
}
};
private void showDate(int year, int month, int day) {
abbes = new StringBuilder().append(day).append("/")
.append(month).append("/").append(year);
android.support.v4.app.Fragment fragment = null;
fragment = new Fragment7();
Bundle bundle =new Bundle();
bundle.putString("Radio", String.valueOf(abbes));
fragment.setArguments(bundle);
Toast.makeText(this, ""+abbes, Toast.LENGTH_LONG).show();
}
当我通过我的活动中的对话框更改日期时,我使用Toast
进行了检查,因此我尝试将字符串发送到我的Fragment
,只是它没有发送任何内容,我不明白为什么!
在我的
中Fragment
if (getArguments() != null) {
abbes1 = this.getArguments().getString("Radio");
name.setText(abbes1);
}
答案 0 :(得分:0)
您需要将片段中的数据发送到容器活动。您只需使用界面即可。您需要将数据传递给接口方法。在您的活动中实施该界面,覆盖它的方法,您将在活动中获得您的数据。这是最模块化的方法,它也避免了内存泄漏。作为参考,您可以查看此link。
否则,您可以直接从片段中调用容器Activity的方法并传递其中的数据值。像这样:((YourContainerActivity)getActivity()).yourMethodInActivity(yourParams);
对于sendind数据从活动到片段:
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container_layout,fragobj,"FragmentClass");
fragmentTransaction.commit();
在你的片段中,你可以使用getArguments()来获取包。