2017-04-24 76 views
-1

此處我有一個片段中的日曆,我希望在單擊某個日期時發送一個帶有日期(我們點擊該日期)的新活動。 那麼我怎樣才能發送日期在一個新的活動,當我點擊日曆日期? 現在,我有這個日曆單擊新活動

import android.icu.util.Calendar; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.ViewTreeObserver; 
import android.widget.CalendarView; 
import android.widget.TextView; 
import android.widget.Toast; 

import butterknife.Bind; 
import butterknife.ButterKnife; 

public class Tab2Calendrier extends Fragment { 
    @Bind(R.id.calendar) 
    CalendarView calendar; 

@Override 
public View onCreateView(LayoutInflater inflater, final ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.tab2calendrier, container, false); 
    ButterKnife.bind(this, rootView); 

    calendar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){ 
     @Override 
     public void onGlobalLayout() 
     { 

     } 
    }); 

    return rootView; 
} 

}

感謝

+0

第一 - onGlobalLayout()是一個壞主意,除非你有使用它。第二 - 我不確定問題是什麼。 –

+1

當您找到解決方案時,請不要污衊您的問題 – Justin

回答

0

您應該使用setOnDateChangeListener()。因此,代碼可以是這樣的:

@Override 
public View onCreateView(LayoutInflater inflater, final ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.tab2calendrier, container, false); 
    ButterKnife.bind(this, rootView); 

    calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { 

     @Override 
     onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 
      Intent intent = new Intent(getActivity(), MyActivity.class); 
      // Save the selected date in for using in the new activity 
      intent.putExtra("year", year); 
      intent.putExtra("month", month); 
      intent.putExtra("dayOfMonth", dayOfMonth); 

      startActivity(intent); 
     } 

    }); 
    return rootView; 
} 

和你MyActivity類應該是這樣的:

class MyActivity extends Activity { 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 

     Intent intent = getIntent(); 

     if (intent != null) { 
      // You can check for null to make sure 
      int year = intent.getIntExtra("year", 2017); 
      int month = intent.getIntExtra("month", 1); 
      int dayOfMonth = intent.getIntExtra("dayOfMonth", 1); 

      // Use these to put them inside a TextView... 
     } 
    } 
} 
+0

您寫下了「所以我如何在新活動中發送日期」 - MyActivity是您的新活動(我不知道如何調用它,因此我只是將它命名爲MyActivity - 將其更改爲您的真實活動名稱)。 –

+0

我加了「MyActivity」來澄清。 –

+0

你能分享你當前的代碼嗎? –

0

看看這裏https://developer.android.com/reference/android/widget/CalendarView.OnDateChangeListener.html

calendar.setOnDateChangeListener(new OnDateChangeListener() { 
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 
    Date d = new GregorianCalendar(year, month, dayOfMonth).getTime(); 
    Intent intent = new Intent(activity, Activity.class); 
    intent.putExtra("DATE", d.getTime()); 
    fragment.getContext().startActivity(intent); 
} 
}); 

在這種情況下,我們通過米利斯到活動。 在活動中可以提取日期

Date d = new Date(getIntent().getLongExtra("DATE"));