DateTimePickerDialogFragment class:
public class DateTimePickerDialogFragment extends DialogFragment implements OnClickListener{public static final int DATE_PICKER=0;public static final int TIME_PICKER=1;public static final int DATETIME_PICKER=2;private CustomDatePicker datePicker;private CustomTimePicker timePicker;private CustomDateTimePicker dateTimePicker;private Button ok,clean,cancel;private int dialogType;private View element;//element to fill with date/time valueprivate Calendar currCal;private View type;public static DateTimePickerDialogFragment newInstance(int type,View view) {DateTimePickerDialogFragment dF = new DateTimePickerDialogFragment();dF.dialogType=type;dF.currCal=Calendar.getInstance();dF.element=view;Logger.write("DateTimePickerDialogFragment", "newInstance", Logger.INFO);return dF;}public DateTimePickerDialogFragment() {}@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {// TODO Auto-generated method stubreturn super.onCreateDialog(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {Logger.write("DateTimePickerDialogFragment", "onCreateView- BEGIN", Logger.INFO);Logger.write("DateTimePickerDialogFragment","edittext view:"+ element,Logger.DEBUG);this.setRetainInstance(true);this.getDialog().requestWindowFeature(STYLE_NO_TITLE);this.setCancelable(false);type = null;switch(dialogType){case DATE_PICKER:type =inflater.inflate(R.layout.custom_date_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_data);dateDialog();break;case TIME_PICKER:type =inflater.inflate(R.layout.custom_time_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_hora);timeDialog();break;case DATETIME_PICKER:type =inflater.inflate(R.layout.custom_datetime_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_datahora);dateTimeDialog();}//fill dialog headerfillDialogHeader();//button clicksok=(Button)type.findViewById(R.id.btn_change_date_ok);ok.setOnClickListener(this);clean=(Button)type.findViewById(R.id.btn_change_date_clean);clean.setOnClickListener(this);cancel=(Button)type.findViewById(R.id.btn_change_date_cancel);cancel.setOnClickListener(this);Logger.write("DateTimePickerDialogFragment", "onCreateView- END", Logger.INFO);return type;}@Overridepublic void onResume() {super.onResume();Logger.write("DateTimePickerDialogFragment", "onResume- BEGIN", Logger.INFO);if(dialogType==DATE_PICKER){datePicker.updateDate(currCal.get(Calendar.YEAR),currCal.get(Calendar.MONTH),currCal.get(Calendar.DATE));}if(dialogType==TIME_PICKER){timePicker.updateTime(currCal.get(Calendar.HOUR_OF_DAY),currCal.get(Calendar.MINUTE));}if(dialogType==DATETIME_PICKER){dateTimePicker.updateDateTime(currCal.get(Calendar.YEAR),currCal.get(Calendar.MONTH),currCal.get(Calendar.DATE),currCal.get(Calendar.HOUR_OF_DAY),currCal.get(Calendar.MINUTE));}Logger.write("DateTimePickerDialogFragment", "onResume- END", Logger.INFO);}@Overridepublic void onDestroyView() {Logger.write("DateTimePickerDialogFragment", "onDestroyView- BEGIN", Logger.INFO);if (getDialog() != null && getRetainInstance())getDialog().setOnDismissListener(null);super.onDestroyView();Logger.write("DateTimePickerDialogFragment", "onDestroyView- END", Logger.INFO);}@Overridepublic void onClick(View button) {Logger.write("DateTimePickerDialogFragment", "onClick- BEGIN", Logger.INFO);Logger.write("DateTimePickerDialogFragment","edittext view:"+ element,Logger.DEBUG);///////////////ok button///////////////if(button.equals(ok)){//get focus for ok buttonok.requestFocus();DateTimePickerDialogFragment.this.dismiss();if(dialogType==DATE_PICKER){datePicker.clearFocus();if(element !=null)if(element instanceof EditText)((EditText)element).setText(curDate());else((TextView)element).setText(curDate());}else if(dialogType==TIME_PICKER){timePicker.clearFocus();if(element !=null)if(element instanceof EditText)((EditText)element).setText(curTime());else((TextView)element).setText(curTime());}else{dateTimePicker.clearFocus();if(element !=null)if(element instanceof EditText)((EditText)element).setText(curDateTime());else((TextView)element).setText(curDateTime());}}//////////////////clean button//////////////////if(button.equals(clean)){DateTimePickerDialogFragment.this.dismiss();if(element!=null)if(element instanceof EditText)((EditText)element).setText("");else((TextView)element).setText("");}///////////////////cancel button///////////////////if(button.equals(cancel)){DateTimePickerDialogFragment.this.dismiss();}Logger.write("DateTimePickerDialogFragment", "onClick- END", Logger.INFO);}
}
Here's the Fragment Class:
public class MainFragment extends Fragment {
Button button;
EditText tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Logger.write("MainFragment", "onCreateView - BEGIN",Logger.INFO);
Logger.write("MainFragment", "onCreateView -- EditText= "+tv.toString(), Logger.INFO);
this.setRetainInstance(true);
View view= inflater.inflate(R.layout.main_fragment, container,false);
button= (Button) view.findViewById(R.id.button1);
tv=(EditText) view.findViewById(R.id.editText1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getActivity().getSupportFragmentManager();
Logger.write("MainFragment", "onCreateView:onClick -- EditText= "+tv.toString(), Logger.INFO);
DateTimePickerDialogFragment.newInstance(DateTimePickerDialog.DATETIME_PICKER,tv).show(fm, "dialog");
}
});
Logger.write("MainFragment", "onCreateView - END",Logger.INFO);
return view;
}
}
Here's the log:
1- running the app without calling the dialogfragment:
06-05 01:59:16.956: I/MainFragment(479): onCreateView - BEGIN
06-05 01:59:17.015: I/MainFragment(479): onCreateView -- EditText= android.widget.EditText@44f4b4f8
06-05 01:59:17.036: I/MainFragment(479): onCreateView - END
2- pressing dialog calling button in fragment:
06-05 02:00:06.165: I/MainFragment(479): onCreateView:onClick -- EditText= android.widget.EditText@44f4b4f8
06-05 02:00:06.175: I/DateTimePickerDialogFragment(479): newInstance
06-05 02:00:06.185: I/DateTimePickerDialogFragment(479): onCreateView- BEGIN
06-05 02:00:06.185: D/DateTimePickerDialogFragment(479): edittext view:android.widget.EditText@44f4b4f8
06-05 02:00:06.296: D/CustomDatePicker(479): UpdateDate: 2012/5/5
06-05 02:00:06.296: D/CustomTimePicker(479): updateTime: 2:0
06-05 02:00:06.315: I/DateTimePickerDialogFragment(479): onCreateView- END
06-05 02:00:06.315: I/DateTimePickerDialogFragment(479): onResume- BEGIN
06-05 02:00:06.315: D/CustomDatePicker(479): UpdateDate: 2012/5/5
06-05 02:00:06.315: D/CustomTimePicker(479): updateTime: 2:0
06-05 02:00:06.325: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:00:06.325: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:00:06.325: I/DateTimePickerDialogFragment(479): onResume- END
3- rotate the screen with dialogfragment visible:
06-05 02:01:13.816: I/DateTimePickerDialogFragment(479): onDestroyView- BEGIN
06-05 02:01:13.846: I/DateTimePickerDialogFragment(479): onDestroyView- END
06-05 02:01:13.856: I/MainFragment(479): onCreateView - BEGIN
06-05 02:01:13.876: I/MainFragment(479): onCreateView -- EditText= android.widget.EditText@44f8ae28
06-05 02:01:13.876: I/MainFragment(479): onCreateView - END
06-05 02:01:13.876: I/DateTimePickerDialogFragment(479): onCreateView- BEGIN
06-05 02:01:13.876: D/DateTimePickerDialogFragment(479): edittext view:android.widget.EditText@44f4b4f8
06-05 02:01:14.015: D/CustomDatePicker(479): UpdateDate: 2012/5/5
06-05 02:01:14.015: D/CustomTimePicker(479): updateTime: 2:0
06-05 02:01:14.015: I/DateTimePickerDialogFragment(479): onCreateView- END
06-05 02:01:14.035: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:01:14.055: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:01:14.075: I/DateTimePickerDialogFragment(479): onResume- BEGIN
06-05 02:01:14.075: D/CustomDatePicker(479): UpdateDate: 2012/5/5
06-05 02:01:14.075: D/CustomTimePicker(479): updateTime: 2:0
06-05 02:01:14.075: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:01:14.085: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:01:14.085: I/DateTimePickerDialogFragment(479): onResume- END
06-05 02:01:14.185: I/DateTimePickerDialogFragment(479): onDestroyView- BEGIN
06-05 02:01:14.185: I/DateTimePickerDialogFragment(479): onDestroyView- END
06-05 02:01:14.205: I/MainFragment(479): onCreateView - BEGIN
06-05 02:01:14.255: D/dalvikvm(479): GC_FOR_MALLOC freed 6057 objects / 272936 bytes in 49ms
06-05 02:01:14.265: I/MainFragment(479): onCreateView -- EditText= android.widget.EditText@44fb51c0
06-05 02:01:14.265: I/MainFragment(479): onCreateView - END
06-05 02:01:14.265: I/DateTimePickerDialogFragment(479): onCreateView- BEGIN
06-05 02:01:14.265: D/DateTimePickerDialogFragment(479): edittext view:android.widget.EditText@44f4b4f8
06-05 02:01:14.375: D/CustomDatePicker(479): UpdateDate: 2012/5/5
06-05 02:01:14.375: D/CustomTimePicker(479): updateTime: 2:0
06-05 02:01:14.385: I/DateTimePickerDialogFragment(479): onCreateView- END
06-05 02:01:14.385: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:01:14.385: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:01:14.395: I/DateTimePickerDialogFragment(479): onResume- BEGIN
06-05 02:01:14.395: D/CustomDatePicker(479): UpdateDate: 2012/5/5
06-05 02:01:14.395: D/CustomTimePicker(479): updateTime: 2:0
06-05 02:01:14.405: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:01:14.405: D/CustomTimePicker(479): onTimeChanged: 2:0
06-05 02:01:14.405: I/DateTimePickerDialogFragment(479): onResume- END
4- pressing ok button in dialogfragment to refresh edittext in fragment:
06-05 02:02:13.766: I/DateTimePickerDialogFragment(479): onClick- BEGIN
06-05 02:02:13.766: D/DateTimePickerDialogFragment(479): edittext view:android.widget.EditText@44f4b4f8
06-05 02:02:13.776: I/DateTimePickerDialogFragment(479): onClick- END
06-05 02:02:13.866: I/DateTimePickerDialogFragment(479): onDestroyView- BEGIN
06-05 02:02:13.895: I/DateTimePickerDialogFragment(479): onDestroyView- END
seems after rotation the edittextview in the dialogfragment is still the old one before rotation....
regards,
On Mon, Jun 4, 2012 at 2:48 PM, Fred Niggle <fred.niggle@googlemail.com> wrote:
Ok, first insert logging so that you can see what is happening at runtime.I'd target the edittext and the fragment areas to logcat mirrors what is happening to the data inside your code.Second mail back with both your code (updated to output loging) and the Logcat output - this will help to narrow the problematic area.--
On 4 June 2012 14:37, Bluemercury <joao.rossa@gmail.com> wrote:Here's the DialogFragment:--public class DateTimePickerDialogFragment extends DialogFragment implements OnClickListener{public static final int DATE_PICKER=0;public static final int TIME_PICKER=1;public static final int DATETIME_PICKER=2;private CustomDatePicker datePicker;private CustomTimePicker timePicker;private CustomDateTimePicker dateTimePicker;private Button ok,clean,cancel;private int dialogType;private View element;//element to fill with date/time valueprivate Calendar currCal;private View type;public static DateTimePickerDialogFragment newInstance(int type,View view) {DateTimePickerDialogFragment dF = new DateTimePickerDialogFragment();dF.dialogType=type;dF.currCal=Calendar.getInstance();dF.element=view;Logger.write("DateTimePickerDialogFragment", "newInstance", Logger.INFO);return dF;}
public DateTimePickerDialogFragment() {}@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {// TODO Auto-generated method stubreturn super.onCreateDialog(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {this.setRetainInstance(true);this.getDialog().requestWindowFeature(STYLE_NO_TITLE);this.setCancelable(false);type = null;switch(dialogType){case DATE_PICKER:type =inflater.inflate(R.layout.custom_date_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_data);dateDialog();break;case TIME_PICKER:type =inflater.inflate(R.layout.custom_time_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_hora);timeDialog();break;case DATETIME_PICKER:type =inflater.inflate(R.layout.custom_datetime_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_datahora);dateTimeDialog();}//fill dialog headerfillDialogHeader();//button clicksok=(Button)type.findViewById(R.id.btn_change_date_ok);ok.setOnClickListener(this);clean=(Button)type.findViewById(R.id.btn_change_date_clean);clean.setOnClickListener(this);cancel=(Button)type.findViewById(R.id.btn_change_date_cancel);cancel.setOnClickListener(this);Logger.write("DateTimePickerDialogFragment", "onCreateView", Logger.INFO);return type;}
@Overridepublic void onResume() {super.onResume();if(dialogType==DATE_PICKER){datePicker.updateDate(currCal.get(Calendar.YEAR),currCal.get(Calendar.MONTH),currCal.get(Calendar.DATE));}if(dialogType==TIME_PICKER){timePicker.updateTime(currCal.get(Calendar.HOUR_OF_DAY),currCal.get(Calendar.MINUTE));}if(dialogType==DATETIME_PICKER){dateTimePicker.updateDateTime(currCal.get(Calendar.YEAR),currCal.get(Calendar.MONTH),currCal.get(Calendar.DATE),currCal.get(Calendar.HOUR_OF_DAY),currCal.get(Calendar.MINUTE));}Logger.write("DateTimePickerDialogFragment", "onResume", Logger.INFO);}@Overridepublic void onDestroyView() {if (getDialog() != null && getRetainInstance())getDialog().setOnDismissListener(null);super.onDestroyView();Logger.write("DateTimePickerDialogFragment", "onDestroyView", Logger.INFO);}@Overridepublic void onClick(View button) {///////////////ok button///////////////if(button.equals(ok)){//get focus for ok buttonok.requestFocus();DateTimePickerDialogFragment.this.dismiss();if(dialogType==DATE_PICKER){datePicker.clearFocus();if(element !=null)if(element instanceof EditText)((EditText)element).setText(curDate());else((TextView)element).setText(curDate());}else if(dialogType==TIME_PICKER){timePicker.clearFocus();if(element !=null)if(element instanceof EditText)((EditText)element).setText(curTime());else((TextView)element).setText(curTime());}else{dateTimePicker.clearFocus();if(element !=null)if(element instanceof EditText)((EditText)element).setText(curDateTime());else((TextView)element).setText(curDateTime());}Logger.write("DateTimePickerDialogFragment", "onClick- view:"+ element, Logger.INFO);}//////////////////clean button//////////////////if(button.equals(clean)){DateTimePickerDialogFragment.this.dismiss();if(element!=null)if(element instanceof EditText)((EditText)element).setText("");else((TextView)element).setText("");}///////////////////cancel button///////////////////if(button.equals(cancel)){DateTimePickerDialogFragment.this.dismiss();}}}As you can see i pass the editextView in the newInstance method, i dont know if this is the wrong approach.
Here's the fragment that calls the dialogFragment:public class ProcessSearchFragment extends IpdmsCoreFragment implements OnClickListener{private EditText processNrTV,dateBeginTV, dateEndTV;private Button searchBtn;
@Overridepublic int getInflatableLayoutId() {return R.layout.process_search;}@Overridepublic void initializeFragment(Bundle savedInstanceState) {super.initializeFragment(savedInstanceState);//initialize viewsprocessNrTV=(EditText) getView().findViewById(R.id.nrprocesso_value);dateBeginTV=(EditText) getView().findViewById(R.id.data_inicio_value);dateBeginTV.setOnClickListener(this);dateEndTV=(EditText) getView().findViewById(R.id.data_fim_value);dateEndTV.setOnClickListener(this);searchBtn=(Button) getView().findViewById(R.id.search_button);}@Overridepublic void initializeTask() {}
@Overridepublic void updateFragmentUI(Object data) {}
/* (non-Javadoc)* @see android.view.View.OnClickListener#onClick(android.view.View)*/@Overridepublic void onClick(View v) {FragmentManager fragMan= getActivity().getSupportFragmentManager();DialogFragment dialFragment;if(v.equals(dateBeginTV)){dialFragment=DateTimePickerDialogFragment.newInstance(DateTimePickerDialogFragment.DATETIME_PICKER, dateBeginTV);dialFragment.show(fragMan, "dialog");}if(v.equals(dateEndTV)){dialFragment=DateTimePickerDialogFragment.newInstance(DateTimePickerDialogFragment.DATETIME_PICKER, dateEndTV);dialFragment.show(fragMan, "dialog");}}
}Here's the fragment xml layout:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="6dp"><TextViewandroid:id="@+id/process_search"android:layout_height="wrap_content"android:layout_width="fill_parent"android:background="#D81921"android:paddingLeft="2dp"android:text="Pesquisa de Processo"android:textColor="@android:color/white"/><ScrollViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:fillViewport="true"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:padding="1dp"android:background="#cccccc"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@android:color/white"android:orientation="vertical"><EditTextandroid:id="@+id/nrprocesso_value"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="Nº Processo"></EditText><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><EditTextandroid:id="@+id/data_inicio_value"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="50"android:hint="De"android:freezesText="true"></EditText><EditTextandroid:id="@+id/data_fim_value"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="50"android:hint="Até"></EditText></LinearLayout><Buttonandroid:id="@+id/search_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Procurar" /><TextViewandroid:id="@+id/process_search_result"android:layout_height="wrap_content"android:layout_width="fill_parent"android:background="@android:color/darker_gray"android:paddingLeft="2dp"android:text="Resultados"android:textColor="@android:color/white"/><ListViewandroid:id="@+id/process_search_list"android:layout_width="match_parent"android:layout_height="match_parent" ></ListView></LinearLayout></LinearLayout></ScrollView></LinearLayout>regards,
On Monday, June 4, 2012 11:41:49 AM UTC+1, Bluemercury wrote:Hi! Seems replying directly from gmail doesnt refresh this page. so im posting again, i changed the property like you said but if i call the dialogfragment, rotate the phone and press ok, it wont refresh the editext.Only if i call it again, dont rotate, and press ok. The problem happens when i rotate with the dialogfragment being visible, if the edittext has any value, before i rotate, by default it will show the values after rotation correctly , so the issue here lies when i rotate while showing the dialogfragment, seems the edittext i pass to it looses the connection with the view layout....regards,
On Sunday, June 3, 2012 3:14:16 PM UTC+1, Fred Niggle wrote:This is caused by the contents of the edittext not being saved when rotated.If the edittext is defined via xml then setandroid:freezesText="true"to stop the edittext from loosing its contents upon rotation.Hope this help,FredOn 3 June 2012 01:09, Bluemercury <joao.rossa@gmail.com> wrote:
So im adapting my DateTimePickerDialog implementation to a DialogFragment, and right now it works well, i press the button to show the dialogfragment choose a date/time value, press ok and it will show on the fragment's edit text view.The problem is, if i press the button to show the dialog, then rotate, everything seems to work well except when i press ok to fill the edittext view it wont fill it with the choosen value. If i do this again it will work. Seems the problem is when i rotate the edittext seems to loose the view relation?Here's the frapgment that calls the dialog:public class MainFragment extends Fragment {Button button;TextView tv;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {this.setRetainInstance(true);View view= inflater.inflate(R.layout.main_fragment, container,false);button= (Button) view.findViewById(R.id.button1);tv=(TextView) view.findViewById(R.id.editText1);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {FragmentManager fm = getActivity().getSupportFragmentManager();DateTimePickerDialog.newInstance(DateTimePickerDialog.DATETIME_PICKER,tv).show(fm, "dialog");}});return view;}}Here's the DateTimePickerDialog main methods:public static DateTimePickerDialog newInstance(int type,View view) {DateTimePickerDialog f = new DateTimePickerDialog();f.dialogType=type;f.currCal=Calendar.getInstance();f.element=view;Logger.write("DateTimePickerDialog", "newInstance", Logger.INFO);return f;}public DateTimePickerDialog() {}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {this.setRetainInstance(true);this.getDialog().requestWindowFeature(STYLE_NO_TITLE);this.setCancelable(false);type = null;switch(dialogType){case DATE_PICKER:type =inflater.inflate(R.layout.custom_date_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_data);//fillDialogHeader();dateDialog();break;case TIME_PICKER:type =inflater.inflate(R.layout.custom_time_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_hora);//fillDialogHeader();timeDialog();break;case DATETIME_PICKER:type =inflater.inflate(R.layout.custom_datetime_picker_dialog, container, false);type.findViewById(R.id.imagelogo).setBackgroundResource(R.drawable.ico_popup_datahora);//fillDialogHeader();dateTimeDialog();}fillDialogHeader();//button clicksok=(Button)type.findViewById(R.id.btn_change_date_ok);ok.setOnClickListener(this);clean=(Button)type.findViewById(R.id.btn_change_date_clean);clean.setOnClickListener(this);cancel=(Button)type.findViewById(R.id.btn_change_date_cancel);cancel.setOnClickListener(this);Logger.write("DateTimePickerDialog", "onCreateView", Logger.INFO);return type;}Is the problem associated with passing the edittext view element?regards,--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en--
Magnetic Door Alarm app is now available in Google Play
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--
Magnetic Door Alarm app is now available in Google Play
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
No comments:
Post a Comment