다음과 같은 상황이 있습니다 : 대화가 있습니다. 이 대화 상자에는 단편이 있는데 버튼이 있습니다. 이 Button은 DatePickDialog (DatePickFragment)를 호출합니다. 날짜를 설정하면 올바른 경우이 방법은날짜를 사용하여 단추의 텍스트를 변경하십시오.
onDateSet(DatePicker view, int year, int month, int day)
이라고합니다. (그렇지 않다면 말해주세요!). 이제 Button의 Text를 Date로 변경하려고합니다. 이미 날짜를 문자열로 변환하는 메서드가 있습니다. 하지만 어떻게 xml 파일의 단추에 onDateSet 메서드에서 얻을 알아낼 수 없다 ... findViewById 사용할 수 없습니다. 내가보기 (DatePicker)를 사용할 수 있다고 생각했지만 어떻게해야할지 모르겠다. ...
DatePicker 용 자바 파일은 별도의 패키지 (도구)에있다. 필요할 경우이 메서드를 재사용하는 것이 가장 적합 할 것이다. 다른 곳. 그러나 그것은 나에게 그다지 중요하지 않습니다.
좀 더 코드 : DatePickerFragment.java
package com.domain.app.tools;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.widget.DatePicker;
import java.util.Calendar;
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener
{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
final Calendar myCalendar = Calendar.getInstance();
int year = myCalendar.get(Calendar.YEAR);
int month = myCalendar.get(Calendar.MONTH);
int day = myCalendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day)
{
//Here I am stuck
dateToString(year, month, day);
}
public String dateToString(int year, int month, int day)
{
StringBuffer sb = new StringBuffer();
sb.append(day + "." + month + "." + year);
return sb.toString();
}
}
dialog_create.xml
<?xml version="1.0" encoding = "utf-8"?>
<RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/dialog_create"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background="@color/create_bg_1"
tools:context = ".CreateDialogFragment"
>
<EditText
android:id = "@+id/dialog_create_name"
android:layout_width = "match_parent"
android:layout_height = "@dimen/textFieldHight"
android:text = "@string/create_name"
android:background="@color/white"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
/>
<Button
android:layout_width = "wrap_content"
android:layout_height = "@dimen/textFieldHight"
android:ems = "6"
android:text = "@string/date"
android:background="@color/white"
android:id = "@+id/create_date_button"
android:onClick = "pickDate"
android:layout_below = "@id/dialog_create_name"
/>
</RelativeLayout>
MainActivity.java - 일부
public class MainActivity extends Activity implements HomeFragment.OnFragmentInteractionListener
{
CreateDialogFragment createDialogFragment;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
homeFragment = new HomeFragment();
fragmentManager.beginTransaction().add(R.id.mainFrame, homeFragment).commit();
findViewById(R.id.bottomButton_home).setBackgroundResource(R.drawable.ic_home);
}
public void openCreate(View view)
{
createDialogFragment = new CreateDialogFragment();
createDialogFragment.show(fragmentManager, "TEST");
updateSelectedButton(3);
}
public void pickDate(View v)
{
DialogFragment datePicker = new DatePickerFragment();
datePicker.show(getFragmentManager(), String.format(getResources().getString(R.string.pickDate)));
((EditText) v).setText();//Here I am stuck
}
[...]
}
내가 어떤 도움을 주셔서 감사합니다. 존
더 많은 코드를 붙여 넣을 수 있습니까? –
관련 코드 샘플이 있으므로 지금 질문을 편집했습니다 ... – JRsz