I have just started learning fragments in Android.I am now able to display data in fragments using ListFragment and ArrayAdapter. Now, I am trying to use onclickListener and intents on fragments like the way we do with activities and buttons.
I am trying to open email app when clicking on a fragment that appears as we click the listfragment. But, I am not able to get one thing i want to accomplish which is the email address of a contact. How can i achieve it?
I have achieved these results but on second image the To: part is empty. it should appear kurt@nirvana.com from fragment.
public class ContactDetailsFragment extends Fragment {
private long contactId;
public ContactDetailsFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if (savedInstanceState != null){
contactId = savedInstanceState.getLong("contactId");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_contact_details, container, false);
}
@Override
public void onStart() {
super.onStart();
View view = getView();
if (view != null) {
TextView FNameText = (TextView) view.findViewById(R.id.textFName);
final Contact contact = myContact[(int) contactId];
FNameText.setText(contact.getFName());
TextView LNameText = (TextView) view.findViewById(R.id.textLName);
LNameText.setText(contact.getLName());
TextView PhoneText = (TextView) view.findViewById(R.id.textPhone);
PhoneText.setText(contact.getPhone());
final TextView EmailText = (TextView) view.findViewById(R.id.textEmail);
EmailText.setText(contact.getEmail());
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
//intent.setType("text/message");
intent.putExtra(Intent.EXTRA_SUBJECT, "Announcement from Mobile Apps Class");
intent.putExtra(Intent.EXTRA_EMAIL, myContact.toString());
intent.putExtra(Intent.EXTRA_TEXT, "What do you want. How you want? Do you really know what is there in all those Whats?");
startActivity(Intent.createChooser(intent, "Email"));
//Toast.makeText(getActivity(),"Button is clicked!" +contactId, Toast.LENGTH_LONG).show();
}
});
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState){
savedInstanceState.putLong("contactId", contactId);
}
public void setContact(long id){
this.contactId = id;
}
}
Adding this line
intent.setData(Uri.parse("mailto:"+contact.getEmail()));
and removing
intent.putExtra(Intent.EXTRA_EMAIL, myContact.toString());
solved my problem.