2017-04-24 14 views
-1

ここに私は断片的なカレンダーがあり、日付をクリックすると、(クリックした)日付の新しいアクティビティが送信されます。 カレンダーの日付をクリックすると、新しいアクティビティで日付を送信するにはどうすればいいですか? は今のところ、私はあなたがsetOnDateChangeListener()を使用する必要があり、このカレンダー新しいアクティビティをクリックする

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

を持っています。だから、コードは次のようなものになることができます。

@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")); 
関連する問題