在我的应用程序中,我有3个文本视图水平排列,第一个previmage,第二个日期,第3个nextimage.Now,当我点击第一个textview我应该应该显示上个月,(它的打印)再次点击意味着它应该去当月的第二个月,这应该继续下去。但是,当我点击第二次它是第一个月前来它只是它不会倒退..请帮助我。谢谢你提前..
这是我的代码:
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);
}
});
答案 0 :(得分:1)
原因是您每次都在初始化Calender实例。因此,它采用当前的日期/时间实例。所以,更好的是一次初始化并再次使用它。全局声明它并在onCreate()
中初始化它。
Calendar calendar = null;
protected void onCreate(Bundle savedInstanceState){
calendar = Calendar.getInstance();
...
}
现在,在onClick()
事件中使用此日历实例。
答案 1 :(得分:0)
Date date1=cal.getTime();
你总是把它设置在同一时间并“回到过去一个月”。因此,在onClick之外定义日期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);
}
});
答案 2 :(得分: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=" < " />
<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>