[英]Android/Java - Passing long Value retrieved with getDate() to another Method
我的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,該值與InDate一起用於下一個活動。
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);
}
});
該值將被格式化並顯示在下一個活動中,並保存到我的領域數據庫中。
如何使此活動中的所有方法都可以訪問此long值?
只需在方法中全局聲明變量“ selectedDate”,而不是在局部聲明,活動的每個方法都可以訪問它。
創建一個這樣的全局變量:
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);
}
});
首先,兩次聲明CalendarView
是不需要完成的工作。 您可以簡單地將初始CalendarView
聲明為final並以這種方式使用它。
另外,由於此特定函數實際上為您提供了該函數中的參數,因此您應該使用它。
public void onSelectedDayChange(CalendarView view,int year,int month,int dayOfMonth){
至於您的實際問題,您只需要使CalendarView或long成為類的成員變量即可 。
例:
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.