ich ausgewählt Set schreibe eine Android App mit Fragmente, und in einem meiner Fragment ich bin mit zwei Kommissionierer (Datum & Time).Wie Dialog Werte Textviews in Fragment
ich gegoogelt und fand die Lösung auf die Schaltfläche unter Verwendung von Leitungs Dialoge im Fragment zu zeigen, und ich gleiche tue, zeigt Dialoge, wenn Benutzer auf den entsprechenden Button klicken Sie (n).
aber ich bin nicht immer, wie Werte in den Dialog ihren jeweiligen Textview setzen (s).
siehe meinen Code unten, ich bin mit Dialogen zeigen, indem sie auf Schaltflächen tippen,
DatePickerDialogFragment.java:
public class DatePickerDialogFragment extends DialogFragment {
private DatePickerDialog.OnDateSetListener mDateSetListener;
public DatePickerDialogFragment() {
}
DatePickerDialogFragment(OnDateSetListener dateSetListener) {
mDateSetListener = dateSetListener;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
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);
// Create a new instance of DatePickerDialog and return it
DatePickerDialog dpd = new DatePickerDialog(getActivity(), mDateSetListener, year, month,
day);
// should not accept past dates
return dpd;
}
}
TimePickerFragment.java:
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener
{
private TimePickedListener mListener;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
// use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onAttach(Activity activity)
{
// when the fragment is initially shown (i.e. attached to the activity), cast the activity to the callback interface type
super.onAttach(activity);
try
{
mListener = (TimePickedListener) activity;
}
catch (ClassCastException e)
{
throw new ClassCastException(activity.toString() + " must implement " + TimePickedListener.class.getName());
}
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
{
// when the time is selected, send it to the activity via its callback interface method
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
mListener.onTimePicked(c);
}
public static interface TimePickedListener
{
public void onTimePicked(Calendar time);
}
}
Fragment1.java:
public class Fragment1 extends SherlockFragment {
Button buttonDate;
Button buttonTime;
Button buttonSubmit;
TextView textDate;
TextView textTime;
Spinner spinner;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment1, container, false);
buttonDate = (Button) rootView.findViewById(R.id.btnDate);
buttonTime = (Button) rootView.findViewById(R.id.btnTime);
buttonSubmit = (Button) rootView.findViewById(R.id.btnSubmit);
textDate = (TextView) rootView.findViewById(R.id.txtDate);
textTime = (TextView) rootView.findViewById(R.id.txtTime);
/* // calendar class get the current instance of android phone clock
Calendar c = Calendar.getInstance();
// a formatted object for date and time
SimpleDateFormat sdfTime = new SimpleDateFormat("h:mm a");
// save date and time in string object.
String strTime = sdfTime.format(c.getTime());
textTime.setText(strTime);
SimpleDateFormat sdfDate = new SimpleDateFormat("dd-MMM-yyyy");
String strDate = sdfDate.format(c.getTime());
textDate.setText(strDate);*/
buttonTime.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// show the time picker dialog
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getActivity().getSupportFragmentManager(), "timePicker");
}
});
buttonDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DialogFragment newFragment = new DatePickerDialogFragment();
newFragment.show(getActivity().getSupportFragmentManager(), "datePicker");
}
});
spinner = (Spinner) rootView.findViewById(R.id.spinner);
// Spinner click listener
spinner.setOnItemSelectedListener((OnItemSelectedListener) getActivity());
// Spinner Drop down elements
List<String> categories = new ArrayList<String>();
categories.add("Automobile");
categories.add("Business Services");
categories.add("Computers");
categories.add("Education");
categories.add("Personal");
categories.add("Travel");
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String> (getActivity(), android.R.layout.simple_spinner_item, categories);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
buttonSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
// in place of "Text" i want to show spinner's selected value
intent.putExtra(Intent.EXTRA_TEXT, "Text");
startActivity(Intent.createChooser(intent, "Send Email"));
}
});
return rootView;
}
public void onTimePicked(Calendar time)
{
// display the selected time in the TextView
textTime.setText(DateFormat.format("h:mm a", time));
}
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
setDate(c.getTime().getTime());
}
private void setDate(long millisecond){
int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR
| DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_ABBREV_MONTH
| DateUtils.FORMAT_ABBREV_WEEKDAY;
String dateString = DateUtils.formatDateTime(getActivity(),millisecond, flags);
textDate.setText(dateString);
}
}
MainActivity.java:
public class MainActivity extends SherlockFragmentActivity implements TimePickedListener, OnItemSelectedListener, OnDateSetListener {
// Declare Variables
Fragment1 fragmentTab1;
ListView list;
NavListAdapter adapter;
String[] title;
String[] subtitle;
int[] icon;
Fragment fragment1 = new Fragment1();
Fragment fragment2 = new Fragment2();
Fragment fragment3 = new Fragment3();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Generate title
title = new String[] { "Title Fragment 1", "Title Fragment 2",
"Title Fragment 3" };
// Generate subtitle
subtitle = new String[] { "Subtitle Fragment 1", "Subtitle Fragment 2",
"Subtitle Fragment 3" };
// Generate icon
icon = new int[] { R.drawable.action_about, R.drawable.action_settings,
R.drawable.collections_cloud };
// Pass results to NavListAdapter Class
adapter = new NavListAdapter(this, title, subtitle, icon);
// Hide the ActionBar Title
getSupportActionBar().setDisplayShowTitleEnabled(false);
// Create the Navigation List in your ActionBar
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
// Listen to navigation list clicks
ActionBar.OnNavigationListener navlistener = new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int position, long itemId) {
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
// Locate Position
switch (position) {
case 0:
ft.replace(android.R.id.content, fragment1);
break;
case 1:
ft.replace(android.R.id.content, fragment2);
break;
case 2:
ft.replace(android.R.id.content, fragment3);
break;
}
ft.commit();
return true;
}
};
// Set the NavListAdapter into the ActionBar Navigation
getSupportActionBar().setListNavigationCallbacks(adapter, navlistener);
}
@Override
public void onTimePicked(Calendar time) {
// TODO Auto-generated method stub
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// On selecting a spinner item
String item = parent.getItemAtPosition(position).toString();
// showing a toast on selecting an item
Toast.makeText(parent.getContext(), item, Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
}
für mehr Clearity, ich bin Entsendung Screenshots, überprüfen Sie bitte, und lassen Sie mich wissen, was ich bin fehlt.
Bildschirm 1: als Standard zeigt
Bildschirm 2: zeigt Zeitauswahl Dialog
Bildschirm 3: zeigt Datumsauswahl-Dialog
Könnten Sie mehr Details hinzufügen, was Sie versuchen, in Ihre Textviews einfügen? – Anthony
ausgewählter Wert (Datum & Zeit) durch den Benutzer mit entsprechenden Dialogen, deshalb verwende ich zwei Schaltflächen und zwei Textansichten, wie Sie in Fragment1 sehen – Sun
Sind Sie verwirrt über das Ergebnis aus dem Dialog oder Formatierung dieses Ergebnis für den SetText? – Anthony