Android 从声明为public void的方法中检索值

Android 从声明为public void的方法中检索值,android,picker,Android,Picker,大家好,我是Android和Java新手,我正在编写一个日期选择器片段类,它扩展了DialogFragment,并实现了DatePickerDialog.OnDateSetListener,因此我必须声明方法public void onDateSet(DatePicker视图,int year,int month,int day),在其中,我正在公共字符串变量中设置新日期 是否可以在我的主要活动中使用此公共字符串变量在文本视图中显示值?如果是,怎么做 我的主要活动代码是: public clas

大家好,我是Android和Java新手,我正在编写一个日期选择器片段类,它扩展了DialogFragment,并实现了DatePickerDialog.OnDateSetListener,因此我必须声明方法
public void onDateSet(DatePicker视图,int year,int month,int day)
,在其中,我正在
公共
字符串
变量中设置新日期

是否可以在我的主要活动中使用此
公共字符串
变量在
文本视图
中显示值?如果是,怎么做

我的主要活动代码是:

public class TARForm extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {

    EditText departuredate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tarform);
        departuredate = (EditText) findViewById(R.id.departure_date);
    }

    public void showDatePickerDialog(View v) {
        DialogFragment newFragment = new DatePickerFragment();
        newFragment.show(getFragmentManager(), "datePicker");
    }
}
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

    int selectyear, selectmonth, selectday;
    public String date;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {

        selectday = day;
        selectmonth = month+1;
        selectyear = year;
        date = selectday + "-" + selectmonth + "-" + selectyear;
    }
}
日期选择器片段
代码为:

public class TARForm extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {

    EditText departuredate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tarform);
        departuredate = (EditText) findViewById(R.id.departure_date);
    }

    public void showDatePickerDialog(View v) {
        DialogFragment newFragment = new DatePickerFragment();
        newFragment.show(getFragmentManager(), "datePicker");
    }
}
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

    int selectyear, selectmonth, selectday;
    public String date;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {

        selectday = day;
        selectmonth = month+1;
        selectyear = year;
        date = selectday + "-" + selectmonth + "-" + selectyear;
    }
}

如果您能提供这些信息,我如何将“日期”输入MainActivity departuredate?谢谢。

您可以在onDateSet()方法中的片段中尝试以下代码

    //In your actiivty
String date=null;

public void setDate(String date){
    this.date=date;
    //set this date in your text View
}


   //In your fragment

Context context;
@Override
public void onAttach(Context context){
    this.context=context;
}

public void onDateSet(DatePicker view, int year, int month, int day){
    String date=//get Date over here
    ((TARForm)context).setDate(date)
}
public void onDateSet(DatePicker view, int year, int month, int day) {

        selectday = day;
        selectmonth = month+1;
        selectyear = year;
        date = selectday + "-" + selectmonth + "-" + selectyear;

        if(getActivity() instanceOf TARForm){
           ((TARForm)getActivity()).departuredate.setText(date);
        }
    }

并在您的TARForm活动中制作
公共编辑文本发布日期如果你的活动片段在不同的文件夹中

你是否可以用一个例子解释一下,我是android新手。你是否像我说的那样尝试过?好的,让我知道应用程序在测试时崩溃了。错误:android.util.SuperNotCalledException:Fragment DatePickerFragment{884caec#0 datePicker}未调用super.onAttach()。是的,在onAttach()中,您必须在此之前调用super.onAttach()。context=contextI正在共享我的主要活动和Fragment类的代码。请帮助。您可以使用
OnDismissListener
,请检查此使用界面/回调更新我的答案check@rodaxyz请接受答案以结束此问题