Java Android Sdk DatePickerFragment和TextView
我有下一个问题。我想将使用DatePickerFragment输入的日期传递到TextView,但我不知道如何才能真正做到这一点 当我在DatePickerFragment类中创建TextView对象,然后使用onDateSet方法设置其中的文本时,应用程序崩溃。也许这个问题太基本了,但我没有找到合适的解决办法Java Android Sdk DatePickerFragment和TextView,java,android,sdk,datepicker,Java,Android,Sdk,Datepicker,我有下一个问题。我想将使用DatePickerFragment输入的日期传递到TextView,但我不知道如何才能真正做到这一点 当我在DatePickerFragment类中创建TextView对象,然后使用onDateSet方法设置其中的文本时,应用程序崩溃。也许这个问题太基本了,但我没有找到合适的解决办法 public class DatePickerFragment extends DialogFragment implements DatePickerDial
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener{
TextView tvDate1 = (TextView) getView().findViewByiD(R.id.tvDate);
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
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){
String
StringBuilder sb = new StringBuilder();
sb.append(day);
sb.append("/");
sb.append(month);
sb.append("/");
sb.append(year);
tvDate1.setText(sb);
}
}
你的应用程序可能因此崩溃
TextView tvDate1 = (TextView) getView().findViewByiD(R.id.tvDate);
我猜您的选择器位于不同的文件中,您正在尝试初始化textview。findViewById是活动类的一种方法
使用接口
检查“与活动沟通”下的主题
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
TheListener listener;
public interface TheListener{
public void returnDate(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);
listener = (TheListener) getActivity();
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
Calendar c = Calendar.getInstance();
c.set(year, month, day);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(c.getTime());
if (listener != null)
{
listener.returnDate(formattedDate);
}
}
}
然后在MainActivity中实现接口并将日期设置为textview
public class MainActivity extends Activity implements DatePickerFragment.TheListener{
Button b;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b= (Button) findViewById(R.id.button1);
tv= (TextView) findViewById(R.id.textView1);
b.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DialogFragment picker = new DatePickerFragment();
picker.show(getFragmentManager(), "datePicker");
}
});
}
@Override
public void returnDate(String date) {
// TODO Auto-generated method stub
tv.setText(date);
}
}
如果是崩溃,你应该发布相关的stacktrace。一定要试试贴出来的答案,应该有用。真的谢谢你,我不知道为什么这个问题会变成负数。也许我的英语那么差。对此我很抱歉。我第一天就学会了android sdk,但还没有完全了解。再次感谢m8I这里的listener对象为空,所以在我的文本视图中没有显示任何内容。知道为什么吗?@Jalle没有密码,不知道为什么