2016-08-07 4 views
0

ユーザーがEditText StartTimeとEndTimeをクリックした時刻を取得しようとしています。問題は、TimePickerFragmentEditTextを区別する方法がわかりません。助けてください。Android:2つの異なるEditTextフィールド(開始/終了)で時刻をピッカーから設定するにはどうすればよいですか?

public void initializeTime() { 
    startTimeEditText = (EditText) findViewById(R.id.startTimeEditText); 
    startTimeEditText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Initialize a new time picker dialog fragment 
      DialogFragment dFragment = new TimePickerFragment(); 
      // Show the time picker dialog fragment 
      dFragment.show(getSupportFragmentManager(),"TimePicker"); 
     } 
    }); 

    endTimeEditText = (EditText) findViewById(R.id.endTimeEditText); 
    endTimeEditText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Initialize a new time picker dialog fragment 
      DialogFragment dFragment = new TimePickerFragment(); 

      // Show the time picker dialog fragment 
      dFragment.show(getSupportFragmentManager(),"TimePicker"); 
     } 
    }); 
} 

TimePickerFragment.java

@Override 
public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    // Do something with the time chosen by the user 
    EditText startTimeEditText = (EditText) getActivity().findViewById(R.id.startTimeEditText); 
    EditText endTimeEditText = (EditText) getActivity().findViewById(R.id.endTimeEditText); 
    flag = getArguments().getString("Flag"); 
    Log.v(TAG,flag); 

    Toast.makeText(getActivity(), "Toast"+flag, Toast.LENGTH_LONG).show(); 


    if (startTimeEditText.isActivated()){ 
     startTimeEditText.setText(String.valueOf(hourOfDay) + ":" + String.valueOf(minute)); 
    } 
    else if (endTimeEditText.isActivated()){ 
     endTimeEditText.setText(String.valueOf(hourOfDay) + ":" + String.valueOf(minute)); 
    } 
} 

答えて

0

TimePickerFragmentActivityの残りの部分のレイアウトを台無しないでください。ここに最善の方法は、TimePickerFragmentにリスナーを渡すことです。 TimePicker.setOnTimeChangedListener(...)を見てください。それはFragmentではありませんが、そのアイデアは同じです。

別の解決方法は、イベントバス(たとえば、EventBus libraryを含む)を使用し、ユーザーが日付を選択したときに新しいイベントを送信することです。このようにして、アプリケーションの任意のコンポーネントがこのイベントに登録し、

関連する問題