2013-10-28 50 views
0

我正在製作一個Android應用程序,我希望將值從一個活動傳遞到另一個活動。我在示例項目中編寫了代碼,他們獲得了所需的結果,但是當我將該代碼放入項目時,它會顯示錯誤消息「不幸的是,項目應用程序已停止」。有誰可以告訴我爲什麼會發生這種情況?通過活動傳遞的值

第一個活動代碼:

public void btnAdd_Click(View view) 
    { 
     boolean ok=true; 
     try { 
      String str=a; 
      Intent i=new Intent(); 
      i=new Intent(MyCalendarActivity.this, MainActivity.class); 
      i.putExtra("mytext", str); 
      startActivity(i); 
     } catch (Exception e) { 
     }} 

次活動代碼:

et.setText(getIntent().getStringExtra("mytext")); 

在logcat中它給上意圖太辛苦了我,然後我改名的消息,然後把它送給後主線程上的消息太多了,在這種情況下我該怎麼辦?

logcat的

10-28 09:55:57.882: E/Selected date(2784): 17-October-2013 
10-28 09:55:58.003: D/GridCellAdapter(2784): Parsed Date: Thu Oct 17 00:00:00 EDT 2013 
10-28 09:55:58.024: I/Choreographer(2784): Skipped 146 frames! The application may be doing too much work on its main thread. 
10-28 09:56:08.854: D/AndroidRuntime(2784): Shutting down VM 
10-28 09:56:08.904: W/dalvikvm(2784): threadid=1: thread exiting with uncaught exception (group=0x414c4700) 
10-28 09:56:09.103: E/AndroidRuntime(2784): FATAL EXCEPTION: main 
10-28 09:56:09.103: E/AndroidRuntime(2784): java.lang.IllegalStateException: Could not find a method btnAdd_Click(View) in the activity class com.andi.smarttravels.MyCalendarActivity for onClick handler on view class android.widget.Button with id 'button1' 

MyCalenderActivity.java

String a; 
private TextView currentMonth; 
private Button selectedDayMonthYearButton; 
private ImageView prevMonth; 
private ImageView nextMonth; 
private GridView calendarView; 
private GridCellAdapter adapter; 
private Calendar _calendar; 
@SuppressLint("NewApi") 
private int month, year; 
@SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi" }) 
private final DateFormat dateFormatter = new DateFormat(); 
private static final String dateTemplate = "MMMM yyyy"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.my_calendar_view); 


    _calendar = Calendar.getInstance(Locale.getDefault()); 
    month = _calendar.get(Calendar.MONTH) + 1; 
    year = _calendar.get(Calendar.YEAR); 
    Log.d(tag, "Calendar Instance:= " + "Month: " + month + " " + "Year: " 
      + year); 

    selectedDayMonthYearButton = (Button) this 
      .findViewById(R.id.selectedDayMonthYear); 
    selectedDayMonthYearButton.setText("Selected: "); 

    prevMonth = (ImageView) this.findViewById(R.id.prevMonth); 
    prevMonth.setOnClickListener(this); 

    currentMonth = (TextView) this.findViewById(R.id.currentMonth); 
    currentMonth.setText(DateFormat.format(dateTemplate, 
      _calendar.getTime())); 

    nextMonth = (ImageView) this.findViewById(R.id.nextMonth); 
    nextMonth.setOnClickListener(this); 

    calendarView = (GridView) this.findViewById(R.id.calendar); 

    // Initialised 
    adapter = new GridCellAdapter(getApplicationContext(), 
      R.id.calendar_day_gridcell, month, year); 
    adapter.notifyDataSetChanged(); 
    calendarView.setAdapter(adapter); 
} 

/** 
* 
* @param month 
* @param year 
*/ 
private void setGridCellAdapterToDate(int month, int year) { 
    adapter = new GridCellAdapter(getApplicationContext(), 
      R.id.calendar_day_gridcell, month, year); 
    _calendar.set(year, month - 1, _calendar.get(Calendar.DAY_OF_MONTH)); 
    currentMonth.setText(DateFormat.format(dateTemplate, 
      _calendar.getTime())); 
    adapter.notifyDataSetChanged(); 
    calendarView.setAdapter(adapter); 
} 

@Override 
public void onClick(View v) { 
    if (v == prevMonth) { 
     if (month <= 1) { 
      month = 12; 
      year--; 
     } else { 
      month--; 
     } 
     Log.d(tag, "Setting Prev Month in GridCellAdapter: " + "Month: " 
       + month + " Year: " + year); 
     setGridCellAdapterToDate(month, year); 
    } 
    if (v == nextMonth) { 
     if (month > 11) { 
      month = 1; 
      year++; 
     } else { 
      month++; 
     } 
     Log.d(tag, "Setting Next Month in GridCellAdapter: " + "Month: " 
       + month + " Year: " + year); 
     setGridCellAdapterToDate(month, year); 
    } 

} 

@Override 
public void onDestroy() { 
    Log.d(tag, "Destroying View ..."); 
    super.onDestroy(); 
} 

// Inner Class 
public class GridCellAdapter extends BaseAdapter implements OnClickListener { 
    private static final String tag = "GridCellAdapter"; 
    private final Context _context; 

    private final List<String> list; 
    private static final int DAY_OFFSET = 1; 
    private final String[] weekdays = new String[] { "Sun", "Mon", "Tue", 
      "Wed", "Thu", "Fri", "Sat" }; 
    private final String[] months = { "January", "February", "March", 
      "April", "May", "June", "July", "August", "September", 
      "October", "November", "December" }; 
    private final int[] daysOfMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 
      31, 30, 31 }; 
    private int daysInMonth; 
    private int currentDayOfMonth; 
    private int currentWeekDay; 
    private Button gridcell; 
    private TextView num_events_per_day; 
    private final HashMap<String, Integer> eventsPerMonthMap; 
    private final SimpleDateFormat dateFormatter = new SimpleDateFormat(
      "dd-MMM-yyyy"); 

    // Days in Current Month 
    @SuppressLint("SimpleDateFormat") 
    public GridCellAdapter(Context context, int textViewResourceId, 
      int month, int year) { 
     super(); 
     this._context = context; 
     this.list = new ArrayList<String>(); 
     Log.d(tag, "==> Passed in Date FOR Month: " + month + " " 
       + "Year: " + year); 
     Calendar calendar = Calendar.getInstance(); 
     setCurrentDayOfMonth(calendar.get(Calendar.DAY_OF_MONTH)); 
     setCurrentWeekDay(calendar.get(Calendar.DAY_OF_WEEK)); 
     Log.d(tag, "New Calendar:= " + calendar.getTime().toString()); 
     Log.d(tag, "CurrentDayOfWeek :" + getCurrentWeekDay()); 
     Log.d(tag, "CurrentDayOfMonth :" + getCurrentDayOfMonth()); 

     // Print Month 
     printMonth(month, year); 

     // Find Number of Events 
     eventsPerMonthMap = findNumberOfEventsPerMonth(year, month); 
    } 

    private String getMonthAsString(int i) { 
     return months[i]; 
    } 

    private String getWeekDayAsString(int i) { 
     return weekdays[i]; 
    } 

    private int getNumberOfDaysOfMonth(int i) { 
     return daysOfMonth[i]; 
    } 

    public String getItem(int position) { 
     return list.get(position); 
    } 

    @Override 
    public int getCount() { 
     return list.size(); 
    } 


    private void printMonth(int mm, int yy) { 
     Log.d(tag, "==> printMonth: mm: " + mm + " " + "yy: " + yy); 
     int trailingSpaces = 0; 
     int daysInPrevMonth = 0; 
     int prevMonth = 0; 
     int prevYear = 0; 
     int nextMonth = 0; 
     int nextYear = 0; 

     int currentMonth = mm - 1; 
     String currentMonthName = getMonthAsString(currentMonth); 
     daysInMonth = getNumberOfDaysOfMonth(currentMonth); 

     Log.d(tag, "Current Month: " + " " + currentMonthName + " having " 
       + daysInMonth + " days."); 

     GregorianCalendar cal = new GregorianCalendar(yy, currentMonth, 1); 
     Log.d(tag, "Gregorian Calendar:= " + cal.getTime().toString()); 

     if (currentMonth == 11) { 
      prevMonth = currentMonth - 1; 
      daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); 
      nextMonth = 0; 
      prevYear = yy; 
      nextYear = yy + 1; 
      Log.d(tag, "*->PrevYear: " + prevYear + " PrevMonth:" 
        + prevMonth + " NextMonth: " + nextMonth 
        + " NextYear: " + nextYear); 
     } else if (currentMonth == 0) { 
      prevMonth = 11; 
      prevYear = yy - 1; 
      nextYear = yy; 
      daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); 
      nextMonth = 1; 
      Log.d(tag, "**--> PrevYear: " + prevYear + " PrevMonth:" 
        + prevMonth + " NextMonth: " + nextMonth 
        + " NextYear: " + nextYear); 
     } else { 
      prevMonth = currentMonth - 1; 
      nextMonth = currentMonth + 1; 
      nextYear = yy; 
      prevYear = yy; 
      daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); 
      Log.d(tag, "***---> PrevYear: " + prevYear + " PrevMonth:" 
        + prevMonth + " NextMonth: " + nextMonth 
        + " NextYear: " + nextYear); 
     } 

     int currentWeekDay = cal.get(Calendar.DAY_OF_WEEK) - 1; 
     trailingSpaces = currentWeekDay; 

     Log.d(tag, "Week Day:" + currentWeekDay + " is " 
       + getWeekDayAsString(currentWeekDay)); 
     Log.d(tag, "No. Trailing space to Add: " + trailingSpaces); 
     Log.d(tag, "No. of Days in Previous Month: " + daysInPrevMonth); 

     if (cal.isLeapYear(cal.get(Calendar.YEAR))) 
      if (mm == 2) 
       ++daysInMonth; 
      else if (mm == 3) 
       ++daysInPrevMonth; 

     // Trailing Month days 
     for (int i = 0; i < trailingSpaces; i++) { 
      Log.d(tag, 
        "PREV MONTH:= " 
          + prevMonth 
          + " => " 
          + getMonthAsString(prevMonth) 
          + " " 
          + String.valueOf((daysInPrevMonth 
            - trailingSpaces + DAY_OFFSET) 
            + i)); 
      list.add(String 
        .valueOf((daysInPrevMonth - trailingSpaces + DAY_OFFSET) 
          + i) 
        + "-GREY" 
        + "-" 
        + getMonthAsString(prevMonth) 
        + "-" 
        + prevYear); 
     } 

     // Current Month Days 
     for (int i = 1; i <= daysInMonth; i++) { 
      Log.d(currentMonthName, String.valueOf(i) + " " 
        + getMonthAsString(currentMonth) + " " + yy); 
      if (i == getCurrentDayOfMonth()) { 
       list.add(String.valueOf(i) + "-BLUE" + "-" 
         + getMonthAsString(currentMonth) + "-" + yy); 
      } else { 
       list.add(String.valueOf(i) + "-WHITE" + "-" 
         + getMonthAsString(currentMonth) + "-" + yy); 
      } 
     } 

     // Leading Month days 
     for (int i = 0; i < list.size() % 7; i++) { 
      Log.d(tag, "NEXT MONTH:= " + getMonthAsString(nextMonth)); 
      list.add(String.valueOf(i + 1) + "-GREY" + "-" 
        + getMonthAsString(nextMonth) + "-" + nextYear); 
     } 
    } 


    private HashMap<String, Integer> findNumberOfEventsPerMonth(int year, 
      int month) { 
     HashMap<String, Integer> map = new HashMap<String, Integer>(); 

     return map; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     if (row == null) { 
      LayoutInflater inflater = (LayoutInflater) _context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.screen_gridcell, parent, false); 
     } 

     // Get a reference to the Day gridcell 
     gridcell = (Button) row.findViewById(R.id.calendar_day_gridcell); 
     gridcell.setOnClickListener(this); 

     // ACCOUNT FOR SPACING 

     Log.d(tag, "Current Day: " + getCurrentDayOfMonth()); 
     String[] day_color = list.get(position).split("-"); 
     String theday = day_color[0]; 
     String themonth = day_color[2]; 
     String theyear = day_color[3]; 
     if ((!eventsPerMonthMap.isEmpty()) && (eventsPerMonthMap != null)) { 
      if (eventsPerMonthMap.containsKey(theday)) { 
       num_events_per_day = (TextView) row 
         .findViewById(R.id.num_events_per_day); 
       Integer numEvents = (Integer) eventsPerMonthMap.get(theday); 
       num_events_per_day.setText(numEvents.toString()); 
      } 
     } 

     // Set the Day GridCell 
     gridcell.setText(theday); 
     gridcell.setTag(theday + "-" + themonth + "-" + theyear); 
     Log.d(tag, "Setting GridCell " + theday + "-" + themonth + "-" 
       + theyear); 

     if (day_color[1].equals("BLACK")) { 
      gridcell.setTextColor(getResources() 
        .getColor(R.color.lightgray)); 
     } 
     if (day_color[1].equals("WHITE")) { 
      gridcell.setTextColor(getResources().getColor(
        R.color.black)); 
     } 
     if (day_color[1].equals("BLUE")) { 
      gridcell.setTextColor(getResources().getColor(R.color.orrange)); 
     } 
     return row; 
    } 

    @Override 
    public void onClick(View view) { 
     String date_month_year = (String) view.getTag(); 
     a=date_month_year; 
     selectedDayMonthYearButton.setText("Selected: " + date_month_year); 
     Log.e("Selected date", date_month_year); 
     try { 
      Date parsedDate = dateFormatter.parse(date_month_year); 
      Log.d(tag, "Parsed Date: " + parsedDate.toString()); 

     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void btnAdd_Click(View view) 
    { 
     boolean ok=true; 
     try { 
      String str=a; 
      Intent i=new Intent(); 
      i=new Intent(MyCalendarActivity.this, MainActivity.class); 
      //i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      i.putExtra("mytext", str); 
      startActivity(i); 
     } catch (Exception e) { 

     }} 

    public int getCurrentDayOfMonth() { 
     return currentDayOfMonth; 
    } 

    private void setCurrentDayOfMonth(int currentDayOfMonth) { 
     this.currentDayOfMonth = currentDayOfMonth; 
    } 

    public void setCurrentWeekDay(int currentWeekDay) { 
     this.currentWeekDay = currentWeekDay; 
    } 

    public int getCurrentWeekDay() { 
     return currentWeekDay; 
    } 
} 

}

+3

您是否在清單文件中聲明瞭您的活動?請發佈您的活動代碼和清單文件。 –

+0

也發佈logcat/stacktrace。 –

+0

正如@androiduser所說的,最常見的錯誤是忘記在清單文件中聲明新的活動。你可以發佈完整的活動代碼和清單文件嗎? – HpTerm

回答

0

你logcat的說,這一切:

java.lang.IllegalStateException: Could not find a method btnAdd_Click(View) in the activity class com.andi.smarttravels.MyCalendarActivity for onClick handler on view class android.widget.Button with id 'button1' 

顯然,方法btnAdd_Click不能被發現/尚未在適當的地方宣佈。

+0

我想獲取變量a的值,所以這就是爲什麼我在返回值的方法之後聲明onclick方法一個。你告訴我我在哪裏申報該方法 – Shrirang

0

使用View.OnClickListener接口而不是按鈕的onCLick()屬性。它比這更有效率。

編輯:

您的活動中,創建的XML佈局 到您的按鈕的引用(檢查onCreate方法)

String a; 
private TextView currentMonth; 
private Button selectedDayMonthYearButton; 
private ImageView prevMonth; 
private ImageView nextMonth; 
private GridView calendarView; 
private GridCellAdapter adapter; 
private Calendar _calendar; 
@SuppressLint("NewApi") 
private int month, year; 
@SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi" }) 
private final DateFormat dateFormatter = new DateFormat(); 
private static final String dateTemplate = "MMMM yyyy"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.my_calendar_view); 


    _calendar = Calendar.getInstance(Locale.getDefault()); 
    month = _calendar.get(Calendar.MONTH) + 1; 
    year = _calendar.get(Calendar.YEAR); 
    Log.d(tag, "Calendar Instance:= " + "Month: " + month + " " + "Year: " 
      + year); 

    selectedDayMonthYearButton = (Button) this 
      .findViewById(R.id.selectedDayMonthYear); 
    selectedDayMonthYearButton.setText("Selected: "); 


    /*************************************************/ 
    // this is how you add an onClickListener to a button or any other view 
    selectedDayMonthYearButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //write the code here that you want to execute on button click 
      btnAdd_Click(); //I removed the View argument of this method as it was of no use 
     } 
    }); 
    /***************************************************/ 



    prevMonth = (ImageView) this.findViewById(R.id.prevMonth); 
    prevMonth.setOnClickListener(this); 

    currentMonth = (TextView) this.findViewById(R.id.currentMonth); 
    currentMonth.setText(DateFormat.format(dateTemplate, 
      _calendar.getTime())); 

    nextMonth = (ImageView) this.findViewById(R.id.nextMonth); 
    nextMonth.setOnClickListener(this); 

    calendarView = (GridView) this.findViewById(R.id.calendar); 

    // Initialised 
    adapter = new GridCellAdapter(getApplicationContext(), 
      R.id.calendar_day_gridcell, month, year); 
    adapter.notifyDataSetChanged(); 
    calendarView.setAdapter(adapter); 
} 

/** 
* 
* @param month 
* @param year 
*/ 
private void setGridCellAdapterToDate(int month, int year) { 
    adapter = new GridCellAdapter(getApplicationContext(), 
      R.id.calendar_day_gridcell, month, year); 
    _calendar.set(year, month - 1, _calendar.get(Calendar.DAY_OF_MONTH)); 
    currentMonth.setText(DateFormat.format(dateTemplate, 
      _calendar.getTime())); 
    adapter.notifyDataSetChanged(); 
    calendarView.setAdapter(adapter); 
} 

@Override 
public void onClick(View v) { 
    if (v == prevMonth) { 
     if (month <= 1) { 
      month = 12; 
      year--; 
     } else { 
      month--; 
     } 
     Log.d(tag, "Setting Prev Month in GridCellAdapter: " + "Month: " 
       + month + " Year: " + year); 
     setGridCellAdapterToDate(month, year); 
    } 
    if (v == nextMonth) { 
     if (month > 11) { 
      month = 1; 
      year++; 
     } else { 
      month++; 
     } 
     Log.d(tag, "Setting Next Month in GridCellAdapter: " + "Month: " 
       + month + " Year: " + year); 
     setGridCellAdapterToDate(month, year); 
    } 

} 

@Override 
public void onDestroy() { 
    Log.d(tag, "Destroying View ..."); 
    super.onDestroy(); 
} 

// Inner Class 
public class GridCellAdapter extends BaseAdapter implements OnClickListener { 
    private static final String tag = "GridCellAdapter"; 
    private final Context _context; 

    private final List<String> list; 
    private static final int DAY_OFFSET = 1; 
    private final String[] weekdays = new String[] { "Sun", "Mon", "Tue", 
      "Wed", "Thu", "Fri", "Sat" }; 
    private final String[] months = { "January", "February", "March", 
      "April", "May", "June", "July", "August", "September", 
      "October", "November", "December" }; 
    private final int[] daysOfMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 
      31, 30, 31 }; 
    private int daysInMonth; 
    private int currentDayOfMonth; 
    private int currentWeekDay; 
    private Button gridcell; 
    private TextView num_events_per_day; 
    private final HashMap<String, Integer> eventsPerMonthMap; 
    private final SimpleDateFormat dateFormatter = new SimpleDateFormat(
      "dd-MMM-yyyy"); 

    // Days in Current Month 
    @SuppressLint("SimpleDateFormat") 
    public GridCellAdapter(Context context, int textViewResourceId, 
      int month, int year) { 
     super(); 
     this._context = context; 
     this.list = new ArrayList<String>(); 
     Log.d(tag, "==> Passed in Date FOR Month: " + month + " " 
       + "Year: " + year); 
     Calendar calendar = Calendar.getInstance(); 
     setCurrentDayOfMonth(calendar.get(Calendar.DAY_OF_MONTH)); 
     setCurrentWeekDay(calendar.get(Calendar.DAY_OF_WEEK)); 
     Log.d(tag, "New Calendar:= " + calendar.getTime().toString()); 
     Log.d(tag, "CurrentDayOfWeek :" + getCurrentWeekDay()); 
     Log.d(tag, "CurrentDayOfMonth :" + getCurrentDayOfMonth()); 

     // Print Month 
     printMonth(month, year); 

     // Find Number of Events 
     eventsPerMonthMap = findNumberOfEventsPerMonth(year, month); 
    } 

    private String getMonthAsString(int i) { 
     return months[i]; 
    } 

    private String getWeekDayAsString(int i) { 
     return weekdays[i]; 
    } 

    private int getNumberOfDaysOfMonth(int i) { 
     return daysOfMonth[i]; 
    } 

    public String getItem(int position) { 
     return list.get(position); 
    } 

    @Override 
    public int getCount() { 
     return list.size(); 
    } 


    private void printMonth(int mm, int yy) { 
     Log.d(tag, "==> printMonth: mm: " + mm + " " + "yy: " + yy); 
     int trailingSpaces = 0; 
     int daysInPrevMonth = 0; 
     int prevMonth = 0; 
     int prevYear = 0; 
     int nextMonth = 0; 
     int nextYear = 0; 

     int currentMonth = mm - 1; 
     String currentMonthName = getMonthAsString(currentMonth); 
     daysInMonth = getNumberOfDaysOfMonth(currentMonth); 

     Log.d(tag, "Current Month: " + " " + currentMonthName + " having " 
       + daysInMonth + " days."); 

     GregorianCalendar cal = new GregorianCalendar(yy, currentMonth, 1); 
     Log.d(tag, "Gregorian Calendar:= " + cal.getTime().toString()); 

     if (currentMonth == 11) { 
      prevMonth = currentMonth - 1; 
      daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); 
      nextMonth = 0; 
      prevYear = yy; 
      nextYear = yy + 1; 
      Log.d(tag, "*->PrevYear: " + prevYear + " PrevMonth:" 
        + prevMonth + " NextMonth: " + nextMonth 
        + " NextYear: " + nextYear); 
     } else if (currentMonth == 0) { 
      prevMonth = 11; 
      prevYear = yy - 1; 
      nextYear = yy; 
      daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); 
      nextMonth = 1; 
      Log.d(tag, "**--> PrevYear: " + prevYear + " PrevMonth:" 
        + prevMonth + " NextMonth: " + nextMonth 
        + " NextYear: " + nextYear); 
     } else { 
      prevMonth = currentMonth - 1; 
      nextMonth = currentMonth + 1; 
      nextYear = yy; 
      prevYear = yy; 
      daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); 
      Log.d(tag, "***---> PrevYear: " + prevYear + " PrevMonth:" 
        + prevMonth + " NextMonth: " + nextMonth 
        + " NextYear: " + nextYear); 
     } 

     int currentWeekDay = cal.get(Calendar.DAY_OF_WEEK) - 1; 
     trailingSpaces = currentWeekDay; 

     Log.d(tag, "Week Day:" + currentWeekDay + " is " 
       + getWeekDayAsString(currentWeekDay)); 
     Log.d(tag, "No. Trailing space to Add: " + trailingSpaces); 
     Log.d(tag, "No. of Days in Previous Month: " + daysInPrevMonth); 

     if (cal.isLeapYear(cal.get(Calendar.YEAR))) 
      if (mm == 2) 
       ++daysInMonth; 
      else if (mm == 3) 
       ++daysInPrevMonth; 

     // Trailing Month days 
     for (int i = 0; i < trailingSpaces; i++) { 
      Log.d(tag, 
        "PREV MONTH:= " 
          + prevMonth 
          + " => " 
          + getMonthAsString(prevMonth) 
          + " " 
          + String.valueOf((daysInPrevMonth 
            - trailingSpaces + DAY_OFFSET) 
            + i)); 
      list.add(String 
        .valueOf((daysInPrevMonth - trailingSpaces + DAY_OFFSET) 
          + i) 
        + "-GREY" 
        + "-" 
        + getMonthAsString(prevMonth) 
        + "-" 
        + prevYear); 
     } 

     // Current Month Days 
     for (int i = 1; i <= daysInMonth; i++) { 
      Log.d(currentMonthName, String.valueOf(i) + " " 
        + getMonthAsString(currentMonth) + " " + yy); 
      if (i == getCurrentDayOfMonth()) { 
       list.add(String.valueOf(i) + "-BLUE" + "-" 
         + getMonthAsString(currentMonth) + "-" + yy); 
      } else { 
       list.add(String.valueOf(i) + "-WHITE" + "-" 
         + getMonthAsString(currentMonth) + "-" + yy); 
      } 
     } 

     // Leading Month days 
     for (int i = 0; i < list.size() % 7; i++) { 
      Log.d(tag, "NEXT MONTH:= " + getMonthAsString(nextMonth)); 
      list.add(String.valueOf(i + 1) + "-GREY" + "-" 
        + getMonthAsString(nextMonth) + "-" + nextYear); 
     } 
    } 


    private HashMap<String, Integer> findNumberOfEventsPerMonth(int year, 
      int month) { 
     HashMap<String, Integer> map = new HashMap<String, Integer>(); 

     return map; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     if (row == null) { 
      LayoutInflater inflater = (LayoutInflater) _context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.screen_gridcell, parent, false); 
     } 

     // Get a reference to the Day gridcell 
     gridcell = (Button) row.findViewById(R.id.calendar_day_gridcell); 
     gridcell.setOnClickListener(this); 

     // ACCOUNT FOR SPACING 

     Log.d(tag, "Current Day: " + getCurrentDayOfMonth()); 
     String[] day_color = list.get(position).split("-"); 
     String theday = day_color[0]; 
     String themonth = day_color[2]; 
     String theyear = day_color[3]; 
     if ((!eventsPerMonthMap.isEmpty()) && (eventsPerMonthMap != null)) { 
      if (eventsPerMonthMap.containsKey(theday)) { 
       num_events_per_day = (TextView) row 
         .findViewById(R.id.num_events_per_day); 
       Integer numEvents = (Integer) eventsPerMonthMap.get(theday); 
       num_events_per_day.setText(numEvents.toString()); 
      } 
     } 

     // Set the Day GridCell 
     gridcell.setText(theday); 
     gridcell.setTag(theday + "-" + themonth + "-" + theyear); 
     Log.d(tag, "Setting GridCell " + theday + "-" + themonth + "-" 
       + theyear); 

     if (day_color[1].equals("BLACK")) { 
      gridcell.setTextColor(getResources() 
        .getColor(R.color.lightgray)); 
     } 
     if (day_color[1].equals("WHITE")) { 
      gridcell.setTextColor(getResources().getColor(
        R.color.black)); 
     } 
     if (day_color[1].equals("BLUE")) { 
      gridcell.setTextColor(getResources().getColor(R.color.orrange)); 
     } 
     return row; 
    } 

    @Override 
    public void onClick(View view) { 
     String date_month_year = (String) view.getTag(); 
     a=date_month_year; 
     selectedDayMonthYearButton.setText("Selected: " + date_month_year); 
     Log.e("Selected date", date_month_year); 
     try { 
      Date parsedDate = dateFormatter.parse(date_month_year); 
      Log.d(tag, "Parsed Date: " + parsedDate.toString()); 

     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void btnAdd_Click() 
    { 
     boolean ok=true; 
     try { 
      String str=a; 
      Intent i=new Intent(); 
      i=new Intent(MyCalendarActivity.this, MainActivity.class); 
      //i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      i.putExtra("mytext", str); 
      startActivity(i); 
     } catch (Exception e) { 

     }} 

    public int getCurrentDayOfMonth() { 
     return currentDayOfMonth; 
    } 

    private void setCurrentDayOfMonth(int currentDayOfMonth) { 
     this.currentDayOfMonth = currentDayOfMonth; 
    } 

    public void setCurrentWeekDay(int currentWeekDay) { 
     this.currentWeekDay = currentWeekDay; 
    } 

    public int getCurrentWeekDay() { 
     return currentWeekDay; 
    } 
} 
} 

,並清除的onClick從XML佈局文件屬性。

+0

我該怎麼做,你能告訴我嗎? – Shrirang

+0

請發佈您的活動代碼,以便我們可以查看它並獲得更全面的問題圖片。將信息從一個活動傳遞到另一個活動可能與此無關,而只是爲了處理此方法未發現的崩潰。 –

+0

我發佈我的活動代碼上面,幫我參考該代碼 – Shrirang