2014-08-28 280 views
-1

如何在android中獲取月份和年份? (當我們點擊左右箭頭時,按升序和降序排列)。在android中獲取月份和年份?

我附上截圖以供參考

https://s28.postimg.org/gyuzzumkd/time_date.jpg

我使用一些代碼從他0x5f3759df答案:

我的代碼:

import android.app.DatePickerDialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.DatePicker; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 

public class Fragment_A extends Fragment implements OnClickListener { 

    private ListView list; 
    ImageButton next,previous; 
    ImageView newmemory; 
    TextView tv; 

    public Fragment_A() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View rootview = inflater.inflate(R.layout.fragment_a, container, false); 
     // call the views with this layout 
     list = (ListView) rootview.findViewById(R.id.listView1); 
     next = (ImageButton) rootview.findViewById(R.id.ibLeftarrow); 
     previous = (ImageButton) rootview.findViewById(R.id.ibRightarrow); 
     newmemory = (ImageView)rootview.findViewById(R.id.ivNewMemory); 
     tv = (TextView) rootview.findViewById(R.id.tvMonth); 
     next.setOnClickListener(this); 
     previous.setOnClickListener(this); 
     newmemory.setOnClickListener(this); 
     CustomAdapterA adapter = new CustomAdapterA(getActivity()); 
     list.setAdapter(adapter); 
     return rootview;  
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if(v.getId()==R.id.ibLeftarrow) 
     { 
      createDialogWithoutDateField().show(); 
     } 
     else if (v.getId()==R.id.ibRightarrow) 
     { 
      createDialogWithoutDateField().show(); 
     } 
     else if (v.getId()==R.id.ivNewMemory) 
     { 
      Intent i = new Intent(getActivity(), NewMemory.class); 
      startActivity(i); 
     }  
    } 

    private DatePickerDialog createDialogWithoutDateField(){ 

      DatePickerDialog dpd = new DatePickerDialog(getActivity(), datePickerListener ,2014,1, 24); 
      try{ 
      java.lang.reflect.Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields(); 
      for (java.lang.reflect.Field datePickerDialogField : datePickerDialogFields) { 
       if (datePickerDialogField.getName().equals("mDatePicker")) { 
        datePickerDialogField.setAccessible(true); 
        DatePicker datePicker = (DatePicker) datePickerDialogField.get(dpd); 
        java.lang.reflect.Field[] datePickerFields = datePickerDialogField.getType().getDeclaredFields(); 
        for (java.lang.reflect.Field datePickerField : datePickerFields) { 
         Log.i("test", datePickerField.getName()); 
         if ("mDaySpinner".equals(datePickerField.getName())) { 
          datePickerField.setAccessible(true); 
          Object dayPicker = new Object(); 
          dayPicker = datePickerField.get(datePicker); 
          ((View) dayPicker).setVisibility(View.GONE); 
         } 
        } 
       } 

       } 
      }catch(Exception ex){ 
      } 
      return dpd; 

      } 

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

// when dialog box is closed, below method will be called. 
public void onDateSet(DatePicker view, int selectedYear, 
     int selectedMonth, int selectedDay) { 

    int year = selectedYear; 
    int month = selectedMonth; 

    tv.setText(new StringBuilder().append(month+1) 
      .append(" ").append(year) 
       .append(" ")); 


} 
}; 

} 
+0

,可以用[採摘](http://developer.android.com/guide/topics/ui/controls/pickers.html)。 [相關SO問題](http://stackoverflow.com/questions/21321789/android-datepicker-change-to-only-month-and-year) – 0x5f3759df 2014-08-28 08:03:38

+0

@ 0x5f3759df:Thanx爲您的答覆我解決了這個問題。 – Srikanth 2014-08-28 12:35:19

回答

1

以前的按鈕被按下

if (mCalendar.get(Calendar.MONTH) == mCalendar 
           .getActualMinimum(Calendar.MONTH)) { 
          mCalendar.set((mCalendar.get(Calendar.YEAR) - 1), 
            mCalendar.getActualMaximum(Calendar.MONTH), 1); 
         } else { 
          mCalendar.set(Calendar.MONTH, 
            mCalendar.get(Calendar.MONTH) - 1); 

         } 

下一步按鈕

if (mCalendar.get(Calendar.MONTH) == mCalendar 
            .getActualMaximum(Calendar.MONTH)) { 
           mCalendar.set((mCalendar.get(Calendar.YEAR) + 1), 
             mCalendar.getActualMinimum(Calendar.MONTH), 1); 
          } else { 
           mCalendar.set(Calendar.MONTH, 
             mCalendar.get(Calendar.MONTH) + 1); 

          } 

初始化mCalendar這樣的按在onCreate()

Calendar mCalendar = Calendar.getInstance(); 

要獲得年月

String str = android.text.format.DateFormat.format("MMMM yyyy", mCalendar).toString(); 
+0

我試過你的方法,但它不工作? – Srikanth 2014-08-28 10:42:55

+0

它的工作原理,在問題中發佈你的代碼。 – Aniruddha 2014-08-28 11:22:36

0

可以使用的getInstance()函數來獲取日曆日期然後根據按鈕事件偵聽器(左右箭頭)將年份和月份解析爲字符串數組。下面是的getInstance()函數的代碼:

final Calendar c = Calendar.getInstance(); 
    year = c.get(Calendar.YEAR); 
    month = c.get(Calendar.MONTH); 
0
dateFormat = new SimpleDateFormat("dd-MMMM-yyyy", locale); 


    c = Calendar.getInstance(); 
    String date = dateFormat.format(c.getTime()); 


    mYear = c.get(Calendar.YEAR); 
    mMonth = c.get(Calendar.MONTH); 
    mDay = c.get(Calendar.DAY_OF_MONTH); 
    updateDisplayLeaveDate(); 
} 

private void updateDisplayLeaveDate() { 
    Calendar cal = Calendar.getInstance(); 
    cal.set(Calendar.YEAR, mYear); 
    cal.set(Calendar.MONTH, mMonth); 
    cal.set(Calendar.DAY_OF_MONTH, mDay); 
    dateMorning = cal.getTime(); 

    String date = dateFormat.format(dateMorning); 
    tvLeaveDateDisplay.setText(date); 
    leaveDate = Util.getDateFormat(mDay, mMonth, mYear); 

} 

// the callback received when the user "sets" the date in the dialog 
private DatePickerDialog.OnDateSetListener mDateSetListenerMorning = new DatePickerDialog.OnDateSetListener() { 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     mYear = year; 
     mMonth = monthOfYear; 
     mDay = dayOfMonth; 
     updateDisplayLeaveDate(); 
    } 
};