从非静态Java获取静态数据 公共类检索活动扩展活动{ 静态字符串数据; 静态整数选择; @凌驾 创建时受保护的void(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_retrieve); } 公共作废showDatePickerDialogFrom(视图v) { 选择=1; DialogFragment newFragment=newDatePickerFragment(); show(getFragmentManager(),“datePicker”); } 公共作废showDatePickerDialogTo(视图五) { 选择=2; 选择字符串日期; DialogFragment newFragment=newDatePickerFragment(); show(getFragmentManager(),“datePicker”); } 公共静态void populateSetDate(整数年、整数月、整数天) { dateData=“”+日+“/”+月+“/”+年; 如果(选项==1) { EditText dateFrom=(EditText)findViewById(R.id.dateTo);
首先使您的方法从非静态Java获取静态数据 公共类检索活动扩展活动{ 静态字符串数据; 静态整数选择; @凌驾 创建时受保护的void(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_retrieve); } 公共作废showDatePickerDialogFrom(视图v) { 选择=1; DialogFragment newFragment=newDatePickerFragment(); show(getFragmentManager(),“datePicker”); } 公共作废showDatePickerDialogTo(视图五) { 选择=2; 选择字符串日期; DialogFragment newFragment=newDatePickerFragment(); show(getFragmentManager(),“datePicker”); } 公共静态void populateSetDate(整数年、整数月、整数天) { dateData=“”+日+“/”+月+“/”+年; 如果(选项==1) { EditText dateFrom=(EditText)findViewById(R.id.dateTo);,java,android,Java,Android,首先使您的方法populateSetDate和变量非静态 碎片: public class RetrieveActivity extends Activity { static String dateData; static int choice ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS
populateSetDate
和变量非静态
碎片:
public class RetrieveActivity extends Activity {
static String dateData;
static int choice ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrieve);
}
public void showDatePickerDialogFrom(View v)
{
choice=1;
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
public void showDatePickerDialogTo(View v)
{
choice=2;
String dateSelected;
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
public static void populateSetDate(int year,int month,int day)
{
dateData = ""+day+"/"+month+"/"+year;
if(choice==1)
{
EditText dateFrom=(EditText)findViewById(R.id.dateTo); <------ error over here on the static to non static stuff.
dateFrom.setText(dateData);
}
else
{
EditText dateTo=(EditText)findViewById(R.id.dateFrom1);<--- here also the same.
dateTo.setText(dateData);
}
}
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener
{
@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);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day)
{
populateSetDate(year, month+1,day);
}
public class RetrieveActivity extends Activity implements Callback
更好的解决方案是创建一个接口
:
public void onDateSet(DatePicker view, int year, int month, int day)
{
((RetrieveActivity)getActivity()).populateSetDate(year, month+1,day);
}
让你的活动实现它:
interface Callbacack{
public void populateSetDate(int year,int month,int day);
}
内部碎片:
public class RetrieveActivity extends Activity {
static String dateData;
static int choice ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrieve);
}
public void showDatePickerDialogFrom(View v)
{
choice=1;
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
public void showDatePickerDialogTo(View v)
{
choice=2;
String dateSelected;
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
public static void populateSetDate(int year,int month,int day)
{
dateData = ""+day+"/"+month+"/"+year;
if(choice==1)
{
EditText dateFrom=(EditText)findViewById(R.id.dateTo); <------ error over here on the static to non static stuff.
dateFrom.setText(dateData);
}
else
{
EditText dateTo=(EditText)findViewById(R.id.dateFrom1);<--- here also the same.
dateTo.setText(dateData);
}
}
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener
{
@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);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day)
{
populateSetDate(year, month+1,day);
}
public class RetrieveActivity extends Activity implements Callback
和onDateSet
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener
{
Callback callback;
public void setCallback(Callback callback){
this.callback = callback;
}
populateSetDate
是静态的。您不需要这样static@Raghunandan我可以知道你是怎么看的吗@Why is populateSetDate是静态的吗?声明你的EditText全局并将你的findviewbyid放入onCreate中method@Raghunandan非常感谢~我不知道一开始它是不是静止的。