2013-08-28 2 views
0

여기 TimePickerFragment, DialogFragment의 도움으로 imageview를 사용하여 도착 및 종료 시간을 선택합니다. 제 질문은 출구 시간을 선택하는 방법입니다. 출구 시간을 선택하면 도착 시간 텍스트 상자에만 표시됩니다. 이 문제를 해결하는 방법이 도움이됩니다.안드로이드에서 시간 선택기를 사용하여 도착 및 종료 시간 선택

도착 시간과 종료 시간은 여기 코드 두 개의 텍스트 상자와 두 개의 이미지보기 버튼을 사용하고 있습니다.

import java.util.Calendar; 
import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Dialog; 
import android.app.TimePickerDialog; 
import android.support.v4.app.DialogFragment; 
import android.support.v4.app.FragmentActivity; 
import android.text.format.DateFormat; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TimePicker; 

@SuppressLint("ValidFragment") 
public class MainActivity extends FragmentActivity { 
EditText arrtime,exittime; 

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

} 
public void selectArrivalTime(View view) { 
    DialogFragment newFragment = new TimePickerFragment(); 
    newFragment.show(getSupportFragmentManager(), "TimePicker"); 
} 
public void selectExitTime(View view) { 
    DialogFragment newFragment = new TimePickerFragment(); 
    newFragment.show(getSupportFragmentManager(), "TimePicker"); 

} 
    public void populateSetArrTime(int hourOfDay, int minute) { 
     arrtime = (EditText)findViewById(R.id.editText1); 

     arrtime.setText(+hourOfDay+":"+minute); 

    } 
    public void populateSetExitTime(int hourOfDay, int minute) { 
     exittime= (EditText)findViewById(R.id.editText2); 
     exittime.setText(+hourOfDay+":"+minute); 
    } 
    public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 
     @Override 
     public Dialog onCreateDialog(Bundle savedInstanceState) { 
      final Calendar calendar = Calendar.getInstance(); 
      int hour = calendar.get(Calendar.HOUR_OF_DAY); 
       int minute = calendar.get(Calendar.MINUTE); 

       return new TimePickerDialog(getActivity(), this, hour, minute, 
         DateFormat.is24HourFormat(getActivity())); 
     } 

     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      // TODO Auto-generated method stub 
      populateSetArrTime(hourOfDay, minute); 
     } 
     public void onTimeSet1(TimePicker view, int hourOfDay, int minute) { 
      // TODO Auto-generated method stub 
      populateSetExitTime(hourOfDay, minute); 
     } 
    } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

이것은 내 XML 레이아웃입니다.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 
<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="22dp" 
    android:layout_marginTop="67dp" 
    android:text="Arrival time" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_below="@+id/editText1" 
    android:layout_marginTop="30dp" 
    android:text="Exit time" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/textView1" 
    android:layout_toRightOf="@+id/textView1" 
    android:clickable="false" 
    android:ems="10" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:inputType="time" /> 

<EditText 
    android:id="@+id/editText2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/textView2" 
    android:layout_alignBottom="@+id/textView2" 
    android:layout_alignLeft="@+id/editText1" 
    android:clickable="false" 
    android:ems="10" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:inputType="time" > 

</EditText> 

<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView2" 
    android:layout_below="@+id/editText2" 
    android:layout_marginTop="51dp" 
    android:contentDescription="@string/selectarrtime" 
    android:onClick="selectArrivalTime" 
    android:src="@drawable/ic_launcher" /> 

<ImageButton 
    android:id="@+id/imageButton2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/editText2" 
    android:layout_alignTop="@+id/imageButton1" 
    android:layout_marginRight="33dp" 
    android:contentDescription="@string/selectexittime" 
    android:onClick="selectExitTime" 
    android:src="@drawable/ic_launcher" /> 

</RelativeLayout> 

난 것 내 도착 편집 텍스트 상자에 시간을 표시하며 나는 종료 시간을 선택하면 것입니다 내 출구 편집 텍스트 상자 방법에 표시되지 같은 도착 편집 텍스트 상자에 시간을 표시하는 도착 시간을 선택하면 이 pls을 slove에 미리 감사드립니다.

+0

XML 파일에서 응용 프로그램은 당신이 원하는 것을 알게 어떻게 시간을 선택 시간을 지금 선택하십시오. –

+0

이 코드의 도움을 받아 도착 시간을 선택하고 있는데 도착 시간을 입력하면 텍스트 상자 편집 만 표시됩니다. – user2724399

답변

0
@SuppressLint("ValidFragment") 
public class MainActivity extends FragmentActivity { 
EditText arrtime,exittime; 
static type=""; //changed 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ImageButton b1=(ImageButton)findViewById(R.id.imageButton1); //changed from here 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      setTime("arrival"); 
     } 
    }); 
    ImageButton b2=(ImageButton)findViewById(R.id.imageButton2); 
    b2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      setTime("exit"); 
     } 
    }); ///to here 
} 
public void setTime(String type) { //function changed 
    MainActivity.type=type; 
    DialogFragment newFragment = new TimePickerFragment(); 
    newFragment.show(getSupportFragmentManager(), "TimePicker"); 
}  
public void populateTime(int hourOfDay, int minute) { //function changed 
    if(type.equals("arrival") { 
     arrtime = (EditText)findViewById(R.id.editText1); 
     arrtime.setText(+hourOfDay+":"+minute); 
    } 
    else if(type.equals("exit") { 
     arrtime = (EditText)findViewById(R.id.editText2); 
     exittime.setText(+hourOfDay+":"+minute); 
    } 
} 
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar calendar = Calendar.getInstance(); 
     int hour = calendar.get(Calendar.HOUR_OF_DAY); 
      int minute = calendar.get(Calendar.MINUTE); 

      return new TimePickerDialog(getActivity(), this, hour, minute, 
        DateFormat.is24HourFormat(getActivity())); 
    } 

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     // TODO Auto-generated method stub 
     populateTime(hourOfDay, minute); //changed 
    }   
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
} 

또한 라인 안드로이드를 삭제 : 모두 ImageButtons에서 온 클릭 라인을 당신은 (버튼과 같은) 아무것도 사용하지 않은

관련 문제