簡體   English   中英

Android / Java-將使用getDate()獲取的長值傳遞給另一個方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM