2017-11-23 8 views
0

まず、私は英語が良くないと申し訳なく思っていますが、 ですが、私は可能な限り良く書くように努めます。 DatePickerDialogでデータを変更してフォーカスを設定する方法は?

DatePickerDialogから日付を選択し、再度日付を選択

、ピッカーに

フォーカスが変更日付第1の選択に移動されていません。

どうすればこの問題を解決できますか?

AddProjectOrEvent.java

@Override 
public void onClick(View view) { 
    Log.d("AddProjectOrEvent", "onClick() execute!"); 

    if (view == TV_ADDpe_EvDate_startDate) { 
     showDatePickerDialog(AddProjectOrEvent.this, TV_EV_DATE_START_DATE, dateSetListener, year, month, day); 
    } 





private void showDatePickerDialog(Context context, int FLAG, DatePickerDialog.OnDateSetListener dateSetListener, int year, int month, int day) { 
    Log.d("AddProjectOrEvent", "showDatePickerDialog() execute!"); 

    Flag_What_DateSet = FLAG; 
    new DatePickerDialog(context, dateSetListener, year, month, day).show(); 
} 





DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker datePicker, int year, int month, int day) { 
     Log.d("AddProjectOrEvent", "dateSetListener_onDateSet() execute!"); 

     if (Flag_What_DateSet == TV_EV_DATE_START_DATE) { 
      setText(TV_EV_DATE_START_DATE, TV_ADDpe_EvDate_startDate, year, month, day); 
     } 
    } 
}; 

これは私が話しています、問題のコードです。

これは複雑すぎるので、私はあなたを見せかけるために減らしました。

ピッカーは、私が実装するのかわからない、このコードにより、既に

implimentsです。

+1

コードを表示してください – SSALPHAX

+0

質問を少し明確にするためのサンプルコードを追加できますか?あなたが試していたコードは良いでしょう。 –

+0

でコードを追加した投稿を編集しました。 –

答えて

1

はこれを試してみてくださいを実装して拡張し

現在の日付のために日付ピッカーを設定します。このコーディング最初のクリックおよび選択日付 fo R もう一度クリックするすべての

public class MainActivity extends AppCompatActivity { 

    private int year; 
    private int month; 
    private int day; 
    private EditText signup_bday; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     signup_bday=(EditText)findViewById(R.id.edittext_signup_birthday); 

     signup_bday.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       showDatePickerDialog(signup_bday.getText().toString()); 
      } 
     }); 
    } 

    private void showDatePickerDialog(String date) { 
     if (date.contentEquals("")) { 
      Calendar mcurrentDate=Calendar.getInstance(); 
      year=mcurrentDate.get(Calendar.YEAR); 
      month=mcurrentDate.get(Calendar.MONTH); 
      day=mcurrentDate.get(Calendar.DAY_OF_MONTH); 
     }else{ 
      String[] split = date.split("-"); 
      day = Integer.valueOf(split[0]); 
      int montx = Integer.valueOf(split[1]); 
      month = montx -1; 
      year = Integer.valueOf(split[2]); 
     } 

     DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() { 

      @Override 
      public void onDateSet(DatePicker view, int curyear, int monthOfYear, 
            int dayOfMonth) { 
       // TODO Auto-generated method stub 
       signup_bday.setText(new StringBuilder().append(dayOfMonth).append("-").append(monthOfYear + 1).append("-").append(curyear)); 
      } 
     }; 

     DatePickerDialog datePickerDialog = new DatePickerDialog(this, 
       dateSetListener, year, month, day); 
     datePickerDialog.show(); 
    } 
} 
+0

私のコードは未熟ですが、 あなたの助言に誠実に感謝します。 私はこれを好きにしようとします。 –

0

私はあなたのコードを本当に理解していませんが、あなたが書いたことから、あなたのプロジェクトに日付ピッカーを追加しようとしているようです。ここでは、アクティビティで呼び出す予定のDatePickerを提供します。

DatePickerFragという名前の断片を作成し、framgent内部に次のコードを貼り付けます:日付を取得今

@Override 
public void onClick(View view) { 
    Log.d("AddProjectOrEvent", "onClick() execute!"); 

    if (view == TV_ADDpe_EvDate_startDate) { 
      DatePickerFrag dialog = new DatePickerFrag(); 
      dialog.show(getSupportFragmentManager(), "datepicker"); 
    } 

:次に

public class DatePickerFrag extends DialogFragment implements DatePickerDialog.OnDateSetListener{ 

    AdapterViews.OnDateListener mCallback; 
    OnDateChangeListener mCall; 

    public interface OnDateListener{ 
     void onDate(int month, int year, int date); 
    } 

    @Override 
    public void onAttach(Context context){ 
     super.onAttach(context); 
     mCallback = (OnDateListener)context; 
    } 


    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedState){ 
     Calendar mCalendar = Calendar.getInstance(); 
     int month = mCalendar.get(Calendar.MONTH); 
     int year = mCalendar.get(Calendar.YEAR); 
     int day = mCalendar.get(Calendar.DAY_OF_MONTH); 

     return new DatePickerDialog(getActivity(), this, year, month, day); 
    } 

    @Override 
    public void onDateSet(DatePicker datePicker, int year, int month, int day) { 
     mCallback.onDate(month, year, day); 
    } 
} 

を、ボタンは次のようにクリックされたときに、日付ピッカーを表示アクティビティにDatePickerFragのインターフェイスを実装して、値を取得します。例えば

public class MyActivity extends Activity implements OnDateChangeListener{ 

    @Override 
    public void onDate(int month, int year, int day) { 
     //Get the set month, year and day here in Integers 

    }...} 

すべてです。

+0

ああ、申し訳ありません:) 実際、私は初心者ともstackoverflowとアンドロイドです。未完成ですのでご了承ください。 あなたの答えに感謝します。 –

0

以下のコードからコードを確認してください。正常に動作します。

パブリッククラスDateDialogFragmentは... DialogFragmentが DatePickerDialog.OnDateSetListener {

@NonNull 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 
    DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); 
    dialog.getDatePicker().setMinDate(System.currentTimeMillis()); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    return dialog; 
} 

@Override 
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
    Calendar c = Calendar.getInstance(); 
    c.set(year, month, dayOfMonth); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.US); 
    String formattedDate = sdf.format(c.getTime()); 

} 

}

+0

私はあなたのコードに非常に役立っています。 あなたの答えに感謝します。 –

0

まず、あなたはカレンダーのグローバルdeclaranceを持っている必要があります。

Calendar calendar; 

次に、アクティビティのonCreate()でインスタンス化します。

calendar = Calendar.getInstance(); 

は今のEditTextのonClickのためにあなたは、このようなコードを持つことができます。..非常に初めて

et_calendar.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int YEAR = calendar.get(Calendar.YEAR); 
       int MONTH=calendar.get(Calendar.MONTH); 
       int DAY=calendar.get(Calendar.DAY_OF_WEEK); 
       DatePickerDialog datePickerDialog = new DatePickerDialog(DummyDialog.this, new DatePickerDialog.OnDateSetListener() { 
        @Override 
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
         calendar.set(year,month,dayOfMonth); 
         et_calendar.setText(""+dayOfMonth+"-"+(month+1)+"-"+year); 
        } 
       },YEAR,MONTH,DAY); 
      } 
     }); 

を、あなたのダイアログがdate..when今まであなたがそれにいくつかの日付をクリックしたシステムで開きますその日付はグローバルカレンダーインスタンスに割り当てられます。つまり、選択した日付に集中するようになっているワードでの2回目からです。

+0

oh、ご承知のとおり 多くの種類の回答によってこの問題を解決する方法を理解しました。 もう一度お返事ありがとうございます。 –

関連する問題