我有一个用于CalendarView的OnDateChangeListener,它应该获取所选日期并将其保存为长值。
CalendarView calendar = (CalendarView) findViewById(R.id.calendarView);
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
CalendarView calendar = (CalendarView) findViewById(R.id.calendarView);
long selectedDate = calendar.getDate();}
});
然后我有一个浮动操作按钮,它应该启动另一个活动并传递所选日期的长值,OnDateChangeListener将Intent带到下一个Activity。
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*CalendarView calendar = (CalendarView) findViewById(R.id.calendarView);
long selectedDate = calendar.getDate();*/
Intent intent = new Intent(getApplicationContext(), AddEvent.class);
intent.putExtra("selectedDate", selectedDate);
startActivity(intent);
}
});
值被格式化并显示在下一个活动中并保存到我的领域数据库中。
如何使此活动中的所有方法都可以访问此长值?
答案 0 :(得分:1)
只需在方法中声明变量'selectedDate'全局而不是本地,然后您的活动的每个方法都可以访问它。
答案 1 :(得分:1)
像这样创建一个全局变量:
public class MyClass extends Activity{
private Long mSelectedDate;
...
在日历更改侦听器中初始化它:
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
CalendarView calendar = (CalendarView) findViewById(R.id.calendarView);
mSelectedDate = calendar.getDate();
}
});
然后,在您的FAB中使用它:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), AddEvent.class);
intent.putExtra("selectedDate", mSelectedDate );
startActivity(intent);
}
});
答案 2 :(得分:0)
首先,声明CalendarView
两次是不需要做的工作。您可以简单地将初始CalendarView
声明为final,并以此方式使用它。
或者,由于此特定函数实际上将您自己作为函数中的参数,因此您应该使用它。
public void onSelectedDayChange(CalendarView视图,int year,int 月,int dayOfMonth){
至于您的实际问题,您只需制作CalendarView或长member variable of your class。
示例:
class MyClass {
// Member Variable
private long mMemberVariable = 0l;
// Constructor
public MyClass() {
foo();
bar();
}
private void foo() {
mMemberVariable = 1l;
}
private void bar() {
System.out.println("Your variable is "+mMemberVariable);
}
}