2015-10-07 41 views
0

主要活動包含帶在同一屏幕上顯示日曆的按鈕的操作欄。 我想在日曆視圖中選擇日期時啓動新的活動。 爲此我寫這樣的代碼。啓動新活動的日曆日期選擇

public class Main extends Activity { 
    CalendarView cal; 
    String d,m,y; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     LinearLayout llAppointment, llAdmitPatient, llAdmitDischarge, lle_counsults, llSecondOpinion, llQandA; 
     cal = (CalendarView) findViewById(R.id.calndrView); 
     llAppointment = (LinearLayout) findViewById(R.id.LLAppointment); 
     llAdmitPatient = (LinearLayout) findViewById(R.id.LLAdmitPatient); 
     llAdmitDischarge = (LinearLayout) findViewById(R.id.LLAdmitDischarge); 
     lle_counsults = (LinearLayout) findViewById(R.id.LLE_consults); 
     llSecondOpinion=(LinearLayout) findViewById(R.id.LLSecondOpinions); 
     llQandA = (LinearLayout) findViewById(R.id.LLQandA); 


     //appointments 
     llAppointment.setOnClickListener(new OnClickListener() { 

      @SuppressLint("SimpleDateFormat") 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Calendar c = Calendar.getInstance(); 
       SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy"); 
       String Date = df.format(c.getTime()); 


       String day=Date.substring(0,2); 
       String month=Date.substring(3,5); 
       String year=Date.substring(8,10); 

      d=day;m=month;y=year; 

       Intent intent = new Intent(Main.this, AllPatientsActivity.class); 
       intent.putExtra("day", day); 
       intent.putExtra("month", month); 
       intent.putExtra("year", year); 

       startActivity(intent); 


      } 
     }); 

     // Admitted patients 

     llAdmitPatient.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent intent= new Intent(Main.this, AdmittedPatients.class); 
       startActivity(intent); 
      } 
     }); 
     // Admit-Discharge 
     llAdmitDischarge.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(Main.this, AdmitDischarge.class); 
       startActivity(intent); 
      } 
     }); 
     //E-consultant 
     lle_counsults.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(Main.this, EConsultant.class); 
       startActivity(intent); 
      } 
     }); 
     //Second Opinion 
     llSecondOpinion.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(Main.this, SecondOpinion.class); 
       startActivity(intent); 
      } 
     }); 
     //Question and answer 
     llQandA.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(Main.this, QAndA.class); 
       startActivity(intent); 
      } 
     }); 

     cal.setOnDateChangeListener(new OnDateChangeListener() { 

      @Override 
      public void onSelectedDayChange(CalendarView view, int year, 
        int month, int day) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getBaseContext(), 
         day + "/" + month + "/" + year, Toast.LENGTH_SHORT) 
         .show(); 



       if(Integer.parseInt(d)==day && Integer.parseInt(m)==month && Integer.parseInt(y)==year){ 
        Toast.makeText(Main.this, "day:"+day+"d"+d+"month:"+month+"m"+m+"year:"+year+"y"+y, Toast.LENGTH_LONG).show(); 
       } 


       Intent intent = new Intent(Main.this, AllPatientsActivity.class); 
       intent.putExtra("day", day); 
       intent.putExtra("month", month); 
       intent.putExtra("year", year); 
       startActivity(intent); 
      } 

     }); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu items for use in the action bar 

     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main_activity_actions, menu); 

     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle presses on the action bar items 
     switch (item.getItemId()) { 
     case R.id.action_calendar: 
      Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT) 
        .show(); 
      cal.setVisibility(View.VISIBLE); 

      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 
} 

在按下動作欄按鈕它應啓動calendarView和,如果我在日曆視圖中選擇的日期應該啓動第二活動表示這個日期。但問題是,這段代碼不允許mi選擇本月以外的日期,因爲本月在滾動它時觸發事件。我應該在代碼中做 什麼樣的變化,使我的新的活動將與正確的發射日期

+0

當您按下操作欄中的按鈕時,您想要開始新的活動嗎? – Fakher

+0

no no當我按下操作欄按鈕時,它應該啓動calendarView,如果我在該日曆視圖中選擇了一個日期,它應該啓動顯示此日期的第二個活動。但問題是,這段代碼不允許mi選擇本月以外的日期,因爲本月在滾動它時觸發事件。 –

+0

當您選擇本月以外的日期時,它會給出任何錯誤 –

回答

1

可以使用Intent.putExtra(String date)從一個活動傳遞日期到另一個活動

在主要活動

//Create new Intent Object, and specify class 
Intent intent = new Intent(); 

intent.setClass(Main.this,AllPatientsActivity.class); 

intent.putExtra("passdate","Date_var_here"); 

Main.this.startActivity(intent); 

在AllPatientsActivity活動

//obtain Intent Object send from SenderActivity 
    Intent intent = this.getIntent(); 

    /* Obtain String from Intent */ 
    if(intent !=null) 
    { 
    String strdata = intent.getExtras().getString("passdate"); 
    // DO SOMETHING HERE 
    } 
    else 
    { 
    // DO SOMETHING HERE 
    } 
+0

工程。但仍然不能滾動日曆。一旦月份發生變化,就會引發事件。不允許我選擇其他幾個月的日期。 –

+1

你可以檢查這個滾動問題。 – prat