【问题标题】:Android Sdk DatePickerFragment and TextViewAndroid SDK DatePickerFragment 和 TextView
【发布时间】:2013-09-07 09:59:32
【问题描述】:

我遇到了下一个问题。我想将我使用DatePickerFragment 输入的日期传递给TextView,但我不知道我该怎么做。

当我在 DatePickerFragment 类中创建 TextView 对象,然后使用 onDateSet 方法在其中设置文本时 - 应用程序崩溃。也许这个问题太基础了,但我没有找到任何合适的解决方案。

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);


}
}

【问题讨论】:

  • 如果发生崩溃,您应该发布相关的堆栈跟踪。尝试发布它应该工作的答案

标签: java android sdk datepicker


【解决方案1】:

您的应用可能因此崩溃

   TextView tvDate1 = (TextView) getView().findViewByiD(R.id.tvDate);

我猜你的选择器在不同的文件中,你正在尝试初始化 textview。 findViewById是activity类的方法

使用接口

http://developer.android.com/guide/components/fragments.html

检查与活动通信下的主题

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);
    }

}

【讨论】:

  • 真的谢谢你 =) 我不知道为什么这个问题会减分。也许我的英语那么差。对此我很抱歉。我第一天学习android sdk,还没有全貌。再次感谢你 m8
  • 我这里的监听器对象为空,所以我的文本视图中没有显示任何内容。任何想法为什么?
  • @Jalle 没有代码,无法说明原因
猜你喜欢
  • 2011-09-27
  • 2017-06-04
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
相关资源
最近更新 更多