Android Open Source - bitfynd-wallet-android Edit Address Book Entry Fragment

From Project

Back to project page bitfynd-wallet-android.


The source code is released under:

GNU General Public License

If you think the Android project bitfynd-wallet-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

 * Copyright 2011-2014 the original author or authors.
 *//from  w  ww .  j  a v  a 2  s.  c  om
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <>.

package de.schildbach.wallet.ui;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import de.schildbach.wallet.AddressBookProvider;
import de.schildbach.wallet.BuildConfig;
import de.schildbach.wallet.Constants;
import de.schildbach.wallet.util.WalletUtils;
import de.schildbach.wallet.R;

 * @author Andreas Schildbach
public final class EditAddressBookEntryFragment extends DialogFragment
  private static final String FRAGMENT_TAG = EditAddressBookEntryFragment.class.getName();

  private static final String KEY_ADDRESS = "address";
  private static final String KEY_SUGGESTED_ADDRESS_LABEL = "suggested_address_label";

  public static void edit(final FragmentManager fm, @Nonnull final String address)
    edit(fm, address, null);

  public static void edit(final FragmentManager fm, @Nonnull final String address, @Nullable final String suggestedAddressLabel)
    final DialogFragment newFragment = EditAddressBookEntryFragment.instance(address, suggestedAddressLabel);, FRAGMENT_TAG);

  private static EditAddressBookEntryFragment instance(@Nonnull final String address, @Nullable final String suggestedAddressLabel)
    final EditAddressBookEntryFragment fragment = new EditAddressBookEntryFragment();

    final Bundle args = new Bundle();
    args.putString(KEY_ADDRESS, address);
    args.putString(KEY_SUGGESTED_ADDRESS_LABEL, suggestedAddressLabel);

    return fragment;

  private Activity activity;
  private ContentResolver contentResolver;

  public void onAttach(final Activity activity)

    this.activity = activity;
    this.contentResolver = activity.getContentResolver();

  public Dialog onCreateDialog(final Bundle savedInstanceState)
    final Bundle args = getArguments();
    final String address = args.getString(KEY_ADDRESS);
    final String suggestedAddressLabel = args.getString(KEY_SUGGESTED_ADDRESS_LABEL);

    final LayoutInflater inflater = LayoutInflater.from(activity);

    final Uri uri = AddressBookProvider.contentUri(BuildConfig.APPLICATION_ID).buildUpon().appendPath(address).build();

    final String label = AddressBookProvider.resolveLabel(activity, address);

    final boolean isAdd = label == null;

    final DialogBuilder dialog = new DialogBuilder(activity);

    dialog.setTitle(isAdd ? R.string.edit_address_book_entry_dialog_title_add : R.string.edit_address_book_entry_dialog_title_edit);

    final View view = inflater.inflate(R.layout.edit_address_book_entry_dialog, null);

    final TextView viewAddress = (TextView) view.findViewById(;
    viewAddress.setText(WalletUtils.formatHash(address, Constants.ADDRESS_FORMAT_GROUP_SIZE, Constants.ADDRESS_FORMAT_LINE_SIZE));

    final TextView viewLabel = (TextView) view.findViewById(;
    viewLabel.setText(label != null ? label : suggestedAddressLabel);


    final DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener()
      public void onClick(final DialogInterface dialog, final int which)
        if (which == DialogInterface.BUTTON_POSITIVE)
          final String newLabel = viewLabel.getText().toString().trim();

          if (!newLabel.isEmpty())
            final ContentValues values = new ContentValues();
            values.put(AddressBookProvider.KEY_LABEL, newLabel);

            if (isAdd)
              contentResolver.insert(uri, values);
              contentResolver.update(uri, values, null, null);
          else if (!isAdd)
            contentResolver.delete(uri, null, null);
        else if (which == DialogInterface.BUTTON_NEUTRAL)
          contentResolver.delete(uri, null, null);


    dialog.setPositiveButton(isAdd ? R.string.button_add : R.string.edit_address_book_entry_dialog_button_edit, onClickListener);
    if (!isAdd)
      dialog.setNeutralButton(R.string.button_delete, onClickListener);
    dialog.setNegativeButton(R.string.button_cancel, onClickListener);

    return dialog.create();

Java Source Code List