0

在我的应用程序中,我有 3 个文本视图水平排列,第一个上一个图像,第二个日期,第三个下一个图像。现在,当我单击第一个文本视图时,我应该显示上个月,(它的打印)当我再次单击时意味着它应该转到本月的前第二个月,这应该继续..但是当我点击第二次时,它是上个月的第一个月,它不会倒退..请帮助我。提前谢谢..

这是我的代码:

prvmon.setOnClickListener(new View.OnClickListener() 
    {       
        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            System.out.println("Inside left");
            TextView date=(TextView)findViewById(R.id.date);
            Calendar cal= Calendar.getInstance();
            cal.add(cal.MONTH,-1);
            Date date1=cal.getTime();
            System.out.println("sssssss="+date1);
            cal.setTime(date1);
            SimpleDateFormat month_date = new SimpleDateFormat("MMMMM yyyy");
            String month_name = month_date.format(cal.getTime());  
            date.setText(month_name);   
        }
    });
4

3 回答 3

1

原因是您每次都在初始化 Calender 实例。因此,它采用当前日期/时间实例。因此,最好一次性初始化并再次使用它。全局声明它并在onCreate().

Calendar calendar = null;

protected void onCreate(Bundle savedInstanceState){

calendar = Calendar.getInstance();
...
}

onClick()现在,在您的活动中使用此日历实例。

于 2012-07-31T12:56:05.233 回答
0
Date date1=cal.getTime();

您总是将其设置为相同的时间并“回到过去的一个月”。因此,在onClick 之外定义您的Date date1=cal.getTime() 或跟踪您需要减去多少个月,例如在onClick() 的末尾增加一些值。

编辑:

好的,让我们再看看你的代码

final int clicks = 0; //we'll use this to track clicks
prvmon.setOnClickListener(new View.OnClickListener() 
{       
    @Override
    public void onClick(View arg0) 
    {
        int monthsToGo = --clicks;
        // TODO Auto-generated method stub
        System.out.println("Inside left");
        TextView date=(TextView)findViewById(R.id.date);
        Calendar cal= Calendar.getInstance();
        cal.add(cal.MONTH, monthsToGo); //now it'll deduce -1 then -2 etc...
        Date date1=cal.getTime();
        System.out.println("sssssss="+date1);
        cal.setTime(date1);
        SimpleDateFormat month_date = new SimpleDateFormat("MMMMM yyyy");
        String month_name = month_date.format(cal.getTime());  
        date.setText(month_name);   
    }
});
于 2012-07-31T12:51:27.910 回答
0

可能是一个完整的例子会有所帮助:

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MonthActivity extends Activity {

    private Calendar calendar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.test);

        calendar = Calendar.getInstance();
        calendar.setTime(new Date());

        final TextView textView = (TextView) findViewById(R.id.dateTextView);
        updateTextView(textView);

        Button prev = (Button) findViewById(R.id.prevCmd);
        prev.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calendar.add(Calendar.MONTH, -1);
                updateTextView(textView);

            }
        });

        Button next = (Button) findViewById(R.id.nextCmd);
        next.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calendar.add(Calendar.MONTH, 1);
                updateTextView(textView);

            }
        });
    }

    private void updateTextView(TextView textView) {
        textView.setText(""
                + calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT,
                        Locale.getDefault()));

    }
}

和布局 XML 文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout12"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/prevCmd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text=" &lt; " />

    <TextView
        android:id="@+id/dateTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/nextCmd"
        android:layout_toRightOf="@+id/prevCmd"
        android:gravity="center_vertical|center_horizontal"
        android:paddingTop="8dp"
        android:text="Jul"
        android:textColor="#ffffff"
        android:textSize="20dp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/nextCmd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text=" > " />

</RelativeLayout>
于 2012-07-31T13:08:31.643 回答