2013-05-09 133 views
0

我跟着this tutorial将日期选择器集成到我的应用程序中,我已经量身定制了原创以满足我的需求并设法使其工作。不幸的是,作者并没有太在意使用DatePicker对话框的概念。Android DatePicker初始化时显示全屏

因此,当应用程序启动时会显示全屏日历,而我只是在点击按钮“选择日期”时拉动日,月和年,我需要删除什么?

代码在这里:

public class MainActivity extends Activity implements OnClickListener, 
     OnCheckedChangeListener { 

    TabHost th; 

    Button changeDate; 


    TextView displayDate; 
    public static final int dDialogId = 1; 
    // date and time 
    private int mYear; 
    private int mMonth; 
    private int mDay; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     // Set activity to full screen!! 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     th = (TabHost) findViewById(R.id.tabhost); 

     th.setup(); 
     TabSpec specs = th.newTabSpec("tag1"); 
     // one tab 
     specs.setContent(R.id.tab1); 
     // what appears on actual tab 
     specs.setIndicator("Tools"); 
     th.addTab(specs); 
     specs = th.newTabSpec("tag2"); 
     // one tab 
     specs.setContent(R.id.tab2); 
     // what appears on actual tab 
     specs.setIndicator("Calorie Calculator"); 
     th.addTab(specs); 
     specs = th.newTabSpec("tag3"); 
     // one tab 
     specs.setContent(R.id.tab3); 
     // what appears on actual tab 
     specs.setIndicator("Your Stats!"); 
     th.addTab(specs); 

     initializeVariables(); 
} 


    private void initializeVariables() { 

     mapARun = (Button) findViewById(R.id.btnMapARun); 
     weightConverter = (Button) findViewById(R.id.btnWeightConverter); 

     changeDate = (Button) findViewById(R.id.btnChangeDate); 
     displayDate = (TextView) findViewById(R.id.tvDisplayDate); 

     changeDate.setOnClickListener(this); 

     final Calendar c = Calendar.getInstance(); 
     mYear = c.get(Calendar.YEAR); 
     mMonth = c.get(Calendar.MONTH); 
     mDay = c.get(Calendar.DAY_OF_MONTH); 

     updateDisplay(); 
    } 

    @Override 
    @Deprecated 
    protected void onPrepareDialog(int id, Dialog dialog) { 
     // TODO Auto-generated method stub 
     super.onPrepareDialog(id, dialog); 

     ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay); 

    } 

    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { 

     public void onDateSet(DatePicker view, int year, int monthOfYear, 
       int dayOfMonth) { 
      mYear = year; 
      mMonth = monthOfYear; 
      mDay = dayOfMonth; 
      updateDisplay(); 
     } 
    }; 

    private void updateDisplay() { 
     displayDate.setText(new StringBuilder() 
       // Month is 0 based so add 1 
       .append(mMonth + 1).append("-").append(mDay).append("-") 
       .append(mYear)); 

    } 



     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 

    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 

     case R.id.btnChangeDate: 
      DatePickerDialog DPD = new DatePickerDialog(this, 
        mDateSetListener, mYear, mMonth, mDay); 
      DPD.show(); 
      break; 

     } 

    } 



    } 

} 

道歉,如果你打的语法错误时codei的磨合,我切出了很多其他不相关的功能,

有另一种方式只是展示datepicker何时调用对话框

回答

0

只用按钮创建你的主类别。 使用代码调用另一个活动按钮。 您将看到一个屏幕,其中包含一个按钮,用于调用具有全屏日期选择器的其他屏幕。

选择日期时使DatePicker活动自行结束。 确保您使用startActivityForResult调用活动,并使用finishWithResult结束活动。

+0

有没有办法只是设置按钮来调用'迷你'日期选择器,当它被选中时,应用程序的设置方式我真的不想调用一个单独的活动只是为了设置一个日期 – dyatesupnorth 2013-05-09 15:50:50