0

申し込みをしようとしていますが、データを保存しようとしているときにFirebase Databaseが動作していません。アンドロイドのユーザーサインアップ活動にfirebaseを使用する

Manifestにすべての依存関係とインターネットのアクセス許可を追加しました。

私が間違っているの何を以下の私の基本的なコードで、教えてください:

public class SignUp extends AppCompatActivity { 


private EditText mUserNameField; 
private EditText mUserEmailField; 
private EditText mUserPasswordField; 
private Button mUserRegisterButton; 

private FirebaseAuth mAuth; 
private ProgressDialog mProgress; 
private DatabaseReference mDataBase; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sign_up); 

    mAuth=FirebaseAuth.getInstance(); 
    mDataBase= FirebaseDatabase.getInstance().getReference().child("Users"); 

    mProgress=new ProgressDialog(this); 

    mUserNameField=(EditText)findViewById(R.id.usernameField); 
    mUserEmailField=(EditText) findViewById(R.id.userEmailField); 
    mUserPasswordField=(EditText) findViewById(R.id.userpasswordField); 
    mUserRegisterButton=(Button) findViewById(R.id.signupB3); 

    mUserRegisterButton.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      startRegister(); 
     } 
    }); 



    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

private void startRegister() { 

    final String name=mUserNameField.getText().toString().trim(); 
    String email=mUserEmailField.getText().toString().trim(); 
    String password=mUserPasswordField.getText().toString().trim(); 

    if(!TextUtils.isEmpty(name)&& !TextUtils.isEmpty(email)&& !TextUtils.isEmpty(password)) { 

     mProgress.setMessage("Signing Up..."); 
     mProgress.show(); 

     mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       if (task.isSuccessful()) { 

        String user_id = mAuth.getCurrentUser().getUid(); 
        DatabaseReference current_user_db = mDataBase.child(user_id); 
        current_user_db.child("name").setValue(name); 
        current_user_db.child("image").setValue("default"); 
        mProgress.dismiss(); 

        Intent mainIntent=new Intent(SignUp.this,CreateTour.class); 
        mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(mainIntent); 
       } 
      } 
     }); 
    } 
} 
} 

答えて

0
public class Signup extends AppCompatActivity implements View.OnClickListener { 
    Button btnSignup; 
    TextView btnLogin,btnForgotPass; 
    EditText input_email,inpur_pass; 
    RelativeLayout sign_up; 

    private FirebaseAuth auth; 
    Snackbar snackbar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_signup); 


     btnSignup =(Button)findViewById(R.id.sign_button_register); 
     btnLogin=(TextView)findViewById(R.id.signup_btn_login); 
     btnForgotPass=(TextView)findViewById(R.id.signup_btn_forgot_pass); 
     input_email=(EditText)findViewById(R.id.singup_email); 
     inpur_pass=(EditText)findViewById(R.id.sign_password); 
     sign_up=(RelativeLayout)findViewById(R.id.sign_up); 

     btnSignup.setOnClickListener(this); 
     btnLogin.setOnClickListener(this); 
     btnForgotPass.setOnClickListener(this); 

     //init FireBase 
     auth=FirebaseAuth.getInstance(); 
    } 

    @Override 
    public void onClick(View v) { 
     if(v.getId()==R.id.signup_btn_login){ 
      startActivity(new Intent(Signup.this,MainActivity.class)); 
     }else if(v.getId()==R.id.signup_btn_forgot_pass){ 
      startActivity(new Intent(Signup.this,ForgotPass.class)); 
     }else if(v.getId()==R.id.sign_button_register){ 
      SignUpUser(input_email.getText().toString(),inpur_pass.getText().toString()); 
     } 

    } 

    private void SignUpUser(String email, String passeord) { 

     auth.createUserWithEmailAndPassword(email, passeord). 
       addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
        if(!task.isSuccessful()){ 
         snackbar=Snackbar.make(sign_up,"Error"+task.getException(),Snackbar.LENGTH_LONG); 
         snackbar.show(); 
        } 
        else { 
         snackbar=Snackbar.make(sign_up,"Register Successfully",Snackbar.LENGTH_LONG); 
         snackbar.show(); 
        } 
        } 
       }); 
    } 
} 

このコードは完全に仕事です。 Fire-baseにプロジェクトを登録するときに、Fire-baseによって生成された、プロジェクトにj sonファイルもインクルードする必要があります。

0

これはXMLファイルです。

<android.support.design.widget.TextInputLayout 
      android:id="@+id/sign_input_email" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/img" 
      tools:layout_editor_absoluteY="0dp" 
      tools:layout_editor_absoluteX="8dp"> 


      <EditText 
       android:id="@+id/singup_email" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:hint="Email" 
       android:inputType="textNoSuggestions" 
       /> 
     </android.support.design.widget.TextInputLayout> 

     <android.support.design.widget.TextInputLayout 
      android:id="@+id/signup_input_password" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/sign_input_email" 
      tools:layout_editor_absoluteY="0dp" 
      tools:layout_editor_absoluteX="8dp"> 

      <EditText 
       android:id="@+id/sign_password" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 

       android:inputType="textNoSuggestions" 
       android:hint="Enter the Password" /> 
     </android.support.design.widget.TextInputLayout> 

     <Button 
      android:id="@+id/sign_button_register" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:onClick="" 
      android:layout_below="@+id/signup_input_password" 
      android:text="Register" 
      tools:layout_editor_absoluteY="0dp" 
      tools:layout_editor_absoluteX="8dp" /> 
-1

activity_signup.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ScrollView 
     android:id="@+id/svDaftar" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:fitsSystemWindows="true" 
     android:background="#fff"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:background="#fff" 
      android:focusable="true" 
      android:focusableInTouchMode="true"> 

      <LinearLayout 
       android:id="@+id/llLokasi" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       android:gravity="center" 
       android:paddingLeft="24dp" 
       android:paddingRight="24dp" 
       android:background="@drawable/garis_2" 
       android:paddingBottom="10dp"> 
       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:layout_marginStart="5dp" 
        android:text="Info Toko" 
        android:textSize="20sp" 
        android:textColor="#454545"/> 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="20dp" 
        android:src="@drawable/ic_lokasi_tanda"/> 
       <android.support.v7.widget.AppCompatButton 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:padding="5dp" 
        android:layout_margin="30dp" 
        android:text="Tandai Lokasi Toko" 
        android:textStyle="bold" 
        android:textSize="16sp" 
        android:background="@drawable/rounded_button" 
        android:textColor="#fff" 
        android:onClick="tandaiLokasi"/> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginStart="5dp" 
        android:text="Anda harus menandai lokasi Toko Anda, untuk dapat melanjutkan ke tahap selanjutnya." 
        android:textSize="16sp" 
        android:textColor="#454545"/> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/layDaftar" 
       android:visibility="gone" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:paddingLeft="24dp" 
       android:paddingRight="24dp" 
       android:background="#fff" 
       android:paddingBottom="10dp"> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:layout_marginStart="5dp" 
        android:text="Info Akun" 
        android:textSize="20sp" 
        android:textColor="#454545"/> 

       <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp"> 
        <EditText android:id="@+id/input_namaPemilik" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:inputType="textCapWords" 
         android:hint="Nama Pemilik" 
         android:textSize="15sp" 
         android:textColorHint="#454545" 
         android:textColor="#454545" 
         android:background="@drawable/garis_2"/> 
       </android.support.design.widget.TextInputLayout> 

       <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp"> 
        <EditText android:id="@+id/input_email" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:inputType="textEmailAddress" 
         android:hint="Email" 
         android:textSize="15sp" 
         android:textColorHint="#454545" 
         android:textColor="#454545" 
         android:textColorHighlight="#454545" 
         android:textColorLink="#454545" 
         android:background="@drawable/garis_2"/> 

        <TextView 
         android:id="@+id/tvhasilEmail" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:textSize="14sp" 
         android:textColor="#b15478" 
         android:textStyle="italic" 
         android:layout_marginStart="10dp"/> 

        <android.support.v7.widget.AppCompatButton 
         android:layout_width="130dp" 
         android:layout_height="30dp" 
         android:layout_marginTop="5dp" 
         android:text="Periksa Email" 
         android:textSize="14sp" 
         android:background="@drawable/rounded_button" 
         android:textColor="#fff" 
         android:id="@+id/btPeriksaEmail"/> 
       </android.support.design.widget.TextInputLayout> 

       <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp"> 
        <EditText android:id="@+id/input_password" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:inputType="textPassword" 
         android:hint="Kata Sandi" 
         android:textSize="15sp" 
         android:textColorHint="#454545" 
         android:textColor="#454545" 
         android:background="@drawable/garis_2"/> 

        <TextView 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:textSize="10sp" 
         android:textStyle="italic" 
         android:textColor="#b15478" 
         android:layout_marginStart="10dp" 
         android:text="Minimal 9 karakter, terdiri dari huruf dan angka."/> 

       </android.support.design.widget.TextInputLayout> 

       <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp"> 
        <EditText android:id="@+id/input_reEnterPassword" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:inputType="textPassword" 
         android:hint="Ulangi Kata Sandi" 
         android:textSize="15sp" 
         android:textColorHint="#454545" 
         android:textColor="#454545" 
         android:background="@drawable/garis_2"/> 
       </android.support.design.widget.TextInputLayout> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:gravity="center" 
        android:orientation="horizontal"> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:gravity="center" 
         android:layout_weight="1" 
         android:layout_marginEnd="10dp"> 
         <android.support.v7.widget.AppCompatButton 
          android:id="@+id/btBack" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:padding="5dp" 
          android:text="Sebelumnya" 
          android:textStyle="bold" 
          android:textSize="16sp" 
          android:background="@drawable/rounded_button" 
          android:textColor="#fff" 
          android:onClick="sebelumnyaDaftar"/> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:gravity="center" 
         android:layout_weight="1" 
         android:layout_marginStart="10dp"> 
         <android.support.v7.widget.AppCompatButton 
          android:id="@+id/btn_signup" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:padding="5dp" 
          android:text="Daftar" 
          android:textStyle="bold" 
          android:textSize="16sp" 
          android:background="@drawable/rounded_button" 
          android:textColor="#fff" 
          android:onClick="berikutnyaDaftar"/> 
        </LinearLayout> 
       </LinearLayout> 

      </LinearLayout> 

      <LinearLayout 
       android:visibility="gone" 
       android:id="@+id/layBerikutnya" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:paddingLeft="24dp" 
       android:paddingRight="24dp" 
       android:background="#fff" 
       android:paddingBottom="10dp"> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:layout_marginStart="5dp" 
        android:text="Info Toko" 
        android:textSize="20sp" 
        android:textColor="#454545"/> 

       <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp"> 
        <EditText android:id="@+id/input_namaToko" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:inputType="textCapWords" 
         android:hint="Nama Toko" 
         android:textSize="15sp" 
         android:textColorHint="#454545" 
         android:textColor="#454545" 
         android:textColorHighlight="#454545" 
         android:textColorLink="#454545" 
         android:background="@drawable/garis_2"/> 
       </android.support.design.widget.TextInputLayout> 

       <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp"> 
        <EditText android:id="@+id/input_alamatToko" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:inputType="textCapWords" 
         android:hint="Alamat Toko" 
         android:textSize="15sp" 
         android:textColorHint="#454545" 
         android:textColor="#454545" 
         android:textColorHighlight="#454545" 
         android:textColorLink="#454545" 
         android:background="@drawable/garis_2"/> 
       </android.support.design.widget.TextInputLayout> 

       <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp"> 
        <AutoCompleteTextView 
         android:id="@+id/actKec" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:textSize="15sp" 
         android:inputType="textCapWords" 
         android:hint="Kecamatan" 
         android:textColorHint="#454545" 
         android:textColorHighlight="#454545" 
         android:textColorLink="#454545" 
         android:textColor="#454545" 
         android:background="@drawable/garis_2"> 
        </AutoCompleteTextView> 
       </android.support.design.widget.TextInputLayout> 

       <android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp"> 
        <EditText android:id="@+id/input_telpToko" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:inputType="number" 
         android:hint="Nomor Telepon" 
         android:textSize="15sp" 
         android:textColorHint="#454545" 
         android:textColor="#454545" 
         android:textColorHighlight="#454545" 
         android:textColorLink="#454545" 
         android:background="@drawable/garis_2"/> 
       </android.support.design.widget.TextInputLayout> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal" 
        android:layout_marginStart="5dp" 
        android:layout_marginTop="15dp" 
        android:layout_marginBottom="15dp"> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:padding="2dp" 
         android:layout_weight="1" 
         android:orientation="vertical" 
         android:gravity="center"> 

         <TextView 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:text="Foto KTP" 
          android:textAlignment="center" 
          android:textSize="12sp" 
          android:textColor="#a4a4a4"/> 

         <android.support.v7.widget.CardView 
          xmlns:card_view="http://schemas.android.com/apk/res-auto" 
          android:layout_width="match_parent" 
          android:layout_height="100dp" 
          android:layout_marginEnd="5dp" 
          android:layout_marginStart="5dp" 
          card_view:cardCornerRadius="3dp" 
          card_view:cardElevation="3dp" 
          card_view:cardBackgroundColor="#fff" 
          android:clickable="true" 
          android:foreground="?android:attr/selectableItemBackground" 
          card_view:cardUseCompatPadding="true" 
          android:onClick="uploadGambar"> 

          <RelativeLayout 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:orientation="horizontal" 
           android:layout_gravity="center"> 

           <ImageView 
            android:padding="5dp" 
            android:id="@+id/gambarPromo" 
            android:background="#fff" 
            android:layout_width="match_parent" 
            android:layout_height="100dp" 
            android:src="@drawable/ic_add_img" 
            android:scaleType="center" 
            android:layout_alignParentTop="true" 
            android:layout_alignEnd="@+id/btRemove1"/> 

           <ImageButton 
            android:visibility="gone" 
            android:id="@+id/btRemove1" 
            android:onClick="removeImg1v" 
            android:layout_width="20dp" 
            android:layout_height="20dp" 
            android:layout_alignParentTop="true" 
            android:layout_alignParentEnd="true" 
            android:background="@drawable/ic_remove"/> 

          </RelativeLayout> 

         </android.support.v7.widget.CardView> 
        </LinearLayout> 
        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:padding="2dp" 
         android:layout_weight="1" 
         android:orientation="vertical" 
         android:gravity="center"> 

         <TextView 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:text="Foto Toko" 
          android:textAlignment="center" 
          android:textSize="12sp" 
          android:textColor="#a4a4a4"/> 

         <android.support.v7.widget.CardView 
          xmlns:card_view="http://schemas.android.com/apk/res-auto" 
          android:layout_width="match_parent" 
          android:layout_height="100dp" 
          android:layout_marginStart="5dp" 
          android:layout_marginEnd="5dp" 
          card_view:cardCornerRadius="3dp" 
          card_view:cardElevation="3dp" 
          card_view:cardBackgroundColor="#fff" 
          android:clickable="true" 
          android:foreground="?android:attr/selectableItemBackground" 
          card_view:cardUseCompatPadding="true" 
          android:onClick="uploadGambar2"> 

          <RelativeLayout 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:orientation="horizontal" 
           android:layout_gravity="center"> 

           <ImageView 
            android:padding="5dp" 
            android:id="@+id/gambarPromo2" 
            android:background="#fff" 
            android:layout_width="match_parent" 
            android:layout_height="100dp" 
            android:src="@drawable/ic_add_img" 
            android:scaleType="center" 
            android:layout_alignParentTop="true" 
            android:layout_alignEnd="@+id/btRemove2"/> 

           <ImageButton 
            android:visibility="gone" 
            android:id="@+id/btRemove2" 
            android:onClick="removeImg2v" 
            android:layout_width="20dp" 
            android:layout_height="20dp" 
            android:layout_alignParentTop="true" 
            android:layout_alignParentEnd="true" 
            android:background="@drawable/ic_remove"/> 

          </RelativeLayout> 

         </android.support.v7.widget.CardView> 
        </LinearLayout> 

       </LinearLayout> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal"> 
        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:gravity="center" 
         android:layout_weight="1" 
         android:visibility="invisible" 
         android:layout_marginEnd="10dp"> 
         <android.support.v7.widget.AppCompatButton 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:padding="5dp" 
          android:text="Berikutnya" 
          android:textStyle="bold" 
          android:textSize="16sp" 
          android:background="@drawable/rounded_button" 
          android:textColor="#fff" 
          android:onClick="berikutnyaDaftar"/> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:gravity="center" 
         android:layout_weight="1" 
         android:layout_marginStart="10dp"> 
         <android.support.v7.widget.AppCompatButton 
          android:id="@+id/btNext" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:padding="5dp" 
          android:text="Berikutnya" 
          android:textStyle="bold" 
          android:textSize="16sp" 
          android:background="@drawable/rounded_button" 
          android:textColor="#fff" 
          android:onClick="berikutnyaDaftar"/> 
        </LinearLayout> 
       </LinearLayout> 
      </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 
</android.support.constraint.ConstraintLayout> 

dropdown.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:padding="5dp" /> 
-1

例のJava

SignupActivity.java

public class SignupActivity extends AppCompatActivity { 

    EditText _namaToko, _alamatToko, _telpToko, _namaPemilik, _emailText, _passwordText, _reEnterPasswordText; 
    AutoCompleteTextView _actKec; 
    TextView _tvHasilEmail; 
    Button _signupButton, _btPeriksaEmail, _btNext, _btBack; 

    private FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(); 
    private String Storage_Path = "toko/"; 
    private String imgURL, imgURL2, email, password, lokasi; 
    private ImageButton btRemove2, btRemove; 
    private Uri FilePathUri; 
    private ImageView SelectImage, SelectImage2; 
    private StorageReference storageReference; 
    private boolean foto = false; 
    private boolean foto2 = false; 
    private int Image_Request_Code = 7; 
    private int Image_Request_Code2 = 8; 
    private byte[] compImg; 
    private ByteArrayOutputStream baos; 
    private List<String> emailList = new ArrayList<>(); 
    private String[] kec = {"Kecamatan"}; 
    private static final String Database_Path = "p_db/toko"; 
    private DatabaseReference databaseReference; 
    private ScrollView svDaftar; 
    private boolean emailReady = false; 
    private boolean emailValid = true; 
    private boolean emailKlik = false; 
    private ProgressDialog progressDialog; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_signup); 

     _namaToko = (EditText)findViewById(R.id.input_namaToko); 
     _alamatToko = (EditText)findViewById(R.id.input_alamatToko); 
     _telpToko = (EditText)findViewById(R.id.input_telpToko); 
     _namaPemilik = (EditText)findViewById(R.id.input_namaPemilik); 
     _emailText = (EditText)findViewById(R.id.input_email); 
     _passwordText = (EditText)findViewById(R.id.input_password); 
     _reEnterPasswordText = (EditText)findViewById(R.id.input_reEnterPassword); 
     _actKec = (AutoCompleteTextView)findViewById(R.id.actKec); 
     _tvHasilEmail = (TextView)findViewById(R.id.tvhasilEmail); 
     _signupButton = (Button)findViewById(R.id.btn_signup); 
     _btPeriksaEmail = (Button)findViewById(R.id.btPeriksaEmail); 
     _btNext = (Button)findViewById(R.id.btNext); 
     _btBack = (Button)findViewById(R.id.btBack); 
     svDaftar = (ScrollView)findViewById(R.id.svDaftar); 

     Intent i = getIntent(); 
     Bundle bd = i.getExtras(); 
     if(i.getStringExtra("lokasi") != null){ 
      lokasi = (String) bd.get("lokasi"); 
      bd.remove("lokasi"); 
     } 

     if(lokasi != null){ 
      final LinearLayout layBerikutnya = (LinearLayout)findViewById(R.id.layBerikutnya); 
      final LinearLayout layDaftar = (LinearLayout)findViewById(R.id.layDaftar); 
      final LinearLayout llLokasi = (LinearLayout)findViewById(R.id.llLokasi); 
      layBerikutnya.setVisibility(View.VISIBLE); 
      layDaftar.setVisibility(View.GONE); 
      llLokasi.setVisibility(View.GONE); 
      Snackbar.make(svDaftar,"Lokasi toko berhasil ditandai.", Snackbar.LENGTH_SHORT).show(); 
     }else{ 
      final LinearLayout layBerikutnya = (LinearLayout)findViewById(R.id.layBerikutnya); 
      final LinearLayout layDaftar = (LinearLayout)findViewById(R.id.layDaftar); 
      layBerikutnya.setVisibility(View.GONE); 
      layDaftar.setVisibility(View.GONE); 
     } 

     databaseReference = FirebaseDatabase.getInstance().getReference(Database_Path); 
     cekEmail(); 
     storageReference = FirebaseStorage.getInstance().getReference(); 
     SelectImage = (ImageView)findViewById(R.id.gambarPromo); 
     SelectImage2 = (ImageView)findViewById(R.id.gambarPromo2); 
     progressDialog = new ProgressDialog(SignupActivity.this, R.style.AppTheme_Dark_Dialog); 

     ArrayAdapter<String> adapterKec = new ArrayAdapter<String>(this,R.layout.dropdown, kec); 
     _actKec.setThreshold(1); 
     _actKec.setAdapter(adapterKec); 

     _signupButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       signup(); 
      } 
     }); 

     _btPeriksaEmail.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       emailKlik = true; 
       emailValid = true; 
       for(String emailStr: emailList) { 
        if(emailStr.trim().contains(_emailText.getText())){ 
         emailValid = false; 
        } 
       } 
       if(emailReady) { 
        if (emailValid) { 
         _tvHasilEmail.setText("Alamat email masih tersedia."); 
        } else { 
         _tvHasilEmail.setText("Alamat email sudah digunakan."); 
        } 
       } 
      } 
     }); 

     _emailText.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       emailKlik = false; 
      } 

      @Override 
      public void afterTextChanged(Editable s) {} 
     }); 
    } 
    private void signup() { 
     if (!validate()) { 
      onSignupFailed(); 
      return; 
     } 
     _signupButton.setEnabled(false); 
     progressDialog = new ProgressDialog(SignupActivity.this, R.style.AppTheme_Dark_Dialog); 
     progressDialog.setIndeterminate(true); 
     progressDialog.setMessage("Proses ..."); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
     email = _emailText.getText().toString(); 
     password = _passwordText.getText().toString(); 
     firebaseAuth.createUserWithEmailAndPassword(email, password) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         if (task.isSuccessful()) { 
          uploadFoto(); 
         } 
        } 
       }); 
    } 

    private void createFirebaseUserProfile(final FirebaseUser user) { 
     UserProfileChangeRequest addProfileName = new UserProfileChangeRequest.Builder() 
       .setDisplayName(WordUtils.capitalizeFully(_namaToko.getText().toString())) 
       .setPhotoUri(Uri.parse(imgURL2)) 
       .build(); 
     user.updateProfile(addProfileName); 
    } 

    private void uploadFoto(){ 
     if(foto2) { 
      Bitmap bitmapTwo = ((BitmapDrawable)SelectImage2.getDrawable()).getBitmap(); 
      ByteArrayOutputStream imageTwoBytes = new ByteArrayOutputStream(); 
      bitmapTwo.compress(Bitmap.CompressFormat.JPEG, 100, imageTwoBytes); 
      byte[] dataTwo = imageTwoBytes.toByteArray(); 

      StorageReference filepathTwo = storageReference.child(Storage_Path + System.currentTimeMillis() + ".jpg"); 
      filepathTwo.putBytes(dataTwo).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
        @SuppressWarnings("VisibleForTests") 
        Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
        try { 
         imgURL2 = downloadUrl.toString(); 
        }catch (NullPointerException e){ 
         e.printStackTrace(); 
        } 

        if(foto) { 
         Bitmap bitmapOne = ((BitmapDrawable)SelectImage.getDrawable()).getBitmap(); 
         ByteArrayOutputStream imageOneBytes = new ByteArrayOutputStream(); 
         bitmapOne.compress(Bitmap.CompressFormat.JPEG, 100, imageOneBytes); 
         byte[] dataOne = imageOneBytes.toByteArray(); 

         StorageReference filepathOne = storageReference.child(Storage_Path + System.currentTimeMillis() + ".jpg"); 
         filepathOne.putBytes(dataOne).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
          @Override 
          public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
           @SuppressWarnings("VisibleForTests") 
           Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
           imgURL = downloadUrl.toString(); 
           createFirebaseUserProfile(firebaseAuth.getCurrentUser()); 
           daftarToko(FirebaseAuth.getInstance().getCurrentUser().getUid()); 
           kirimVerikasiEmail(); 
           AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(SignupActivity.this, R.style.AppCompatAlertDialogStyle); 
           try { 
            alertDialogBuilder 
              .setTitle("Verifikasi Email Anda") 
              .setMessage("Kami telah mengirimkan email ke " + FirebaseAuth.getInstance().getCurrentUser().getEmail() + " untuk memverifikasi alamat email Anda. Silahkan klik link di email tersebut untuk dapat masuk ke akun Anda.") 
              .setCancelable(false) 
              .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
               public void onClick(DialogInterface dialog, int id) { 
                onSignupSuccess(); 
                progressDialog.dismiss(); 
               } 
              }); 
           }catch (NullPointerException e){ 
            e.printStackTrace(); 
           } 
           final AlertDialog alertDialog = alertDialogBuilder.create(); 
           alertDialog.show(); 

           TextView pesan = (TextView) alertDialog.findViewById(android.R.id.message); 
           pesan.setTextSize(15); 

           Button b = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); 
           b.setTextColor(getResources().getColor(R.color.colorPrimary)); 
          } 
         }).addOnFailureListener(new OnFailureListener() { 
          @Override 
          public void onFailure(@NonNull Exception e) { 
          } 
         }); 
        } 
       } 
      }).addOnFailureListener(new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception e) { 
       } 
      }); 
     } 
    } 

    private void kirimVerikasiEmail(){ 
     FirebaseUser user = firebaseAuth.getCurrentUser(); 
     if (user != null) { 
      user.sendEmailVerification() 
        .addOnCompleteListener(new OnCompleteListener<Void>() { 
         @Override 
         public void onComplete(@NonNull Task<Void> task) { 
          if (task.isSuccessful()) { 
          } 
         } 
        }); 
     } 
    } 

    private void onSignupSuccess() { 
     FirebaseAuth.getInstance().signOut(); 
     Snackbar.make(svDaftar,"Daftar berhasil.", Snackbar.LENGTH_SHORT).show(); 
     _signupButton.setEnabled(true); 
     setResult(RESULT_OK, null); 
     Intent intent = new Intent(getApplicationContext(),LoginActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
     finish(); 
    } 
    private void onSignupFailed() { 
     _signupButton.setEnabled(true); 
    } 

    private Pattern letter = Pattern.compile("[a-zA-z]"); 
    private Pattern digit = Pattern.compile("[0-9]"); 
    private boolean ok(String password) { 
     Matcher hasLetter = letter.matcher(password); 
     Matcher hasDigit = digit.matcher(password); 
     return hasLetter.find() && hasDigit.find(); 
    } 

    private void daftarToko(String id){ 
     String namaToko = WordUtils.capitalizeFully(_namaToko.getText().toString()); 
     String alamatToko = WordUtils.capitalizeFully(_alamatToko.getText().toString()); 
     String namaPemilik = _namaPemilik.getText().toString(); 
     String email = _emailText.getText().toString(); 
     String kec = _actKec.getText().toString(); 
     String telpToko = _telpToko.getText().toString(); 
     TokoUpload tu = new TokoUpload(alamatToko, email, namaPemilik, namaToko, telpToko, kec, imgURL, imgURL2, lokasi, "0",0); 
     databaseReference.child(id+"/info").setValue(tu); 
    } 

    private boolean validate() { 
     boolean valid = true; 
     String kec = _actKec.getText().toString(); 
     String email = _emailText.getText().toString(); 
     String password = _passwordText.getText().toString(); 
     String reEnterPassword = _reEnterPasswordText.getText().toString(); 
     String namaToko = WordUtils.capitalizeFully(_namaToko.getText().toString()); 
     String alamatToko = WordUtils.capitalizeFully(_alamatToko.getText().toString()); 
     String namaPemilik = _namaPemilik.getText().toString(); 
     String telpToko = _telpToko.getText().toString(); 

     if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) { 
      _emailText.setError("Alamat email tidak valid"); 
      Snackbar.make(svDaftar,"Alamat email tidak valid.", Snackbar.LENGTH_SHORT).show(); 
      valid = false; 
     } else { 
      _emailText.setError(null); 
     } 

     if ((ok(password))&&(password.length()>8)){ 
      _passwordText.setError(null); 
     } else { 
      _passwordText.setError("Kata sandi harus lebih dari 8 karakter dan alfanumerik"); 
      Snackbar.make(svDaftar,"Kata sandi harus lebih dari 8 karakter dan alfanumerik.", Snackbar.LENGTH_SHORT).show(); 
      valid = false; 
     } 
     if (reEnterPassword.isEmpty() || !(reEnterPassword.equals(password))) { 
      _reEnterPasswordText.setError("Kata sandi tidak cocok"); 
      Snackbar.make(svDaftar,"Kata sandi tidak cocok.", Snackbar.LENGTH_SHORT).show(); 
      valid = false; 
     } else { 
      _reEnterPasswordText.setError(null); 
     } 

     if (kec.isEmpty()) { 
      _actKec.setError("Kecamatan belum diisi"); 
      Snackbar.make(svDaftar,"Kecamatan belum diisi.", Snackbar.LENGTH_SHORT).show(); 
      valid = false; 
     } else { 
      _actKec.setError(null); 
     } 

     if (namaToko.isEmpty()) { 
      _namaToko.setError("Nama Toko belum diisi"); 
      Snackbar.make(svDaftar,"Nama Toko belum diisi.", Snackbar.LENGTH_SHORT).show(); 
      valid = false; 
     } else { 
      _namaToko.setError(null); 
     } 
     if (alamatToko.isEmpty()) { 
      _alamatToko.setError("Alamat Toko belum diisi"); 
      Snackbar.make(svDaftar,"Alamat Toko belum diisi.", Snackbar.LENGTH_SHORT).show(); 
      valid = false; 
     } else { 
      _alamatToko.setError(null); 
     } 
     if (namaPemilik.isEmpty()) { 
      _namaPemilik.setError("Nama pemilik belum diisi"); 
      Snackbar.make(svDaftar,"Nama pemilik belum diisi.", Snackbar.LENGTH_SHORT).show(); 
      valid = false; 
     } else { 
      _namaPemilik.setError(null); 
     } 
     if (telpToko.isEmpty()) { 
      _telpToko.setError("Nomor telepon belum diisi"); 
      Snackbar.make(svDaftar,"Nomor telepon belum diisi.", Snackbar.LENGTH_SHORT).show(); 
      valid = false; 
     } else { 
      _telpToko.setError(null); 
     } 
     if(!foto || !foto2){ 
      valid = false; 
      Snackbar.make(svDaftar,"Foto Toko atau KTP belum dipilih.", Snackbar.LENGTH_SHORT).show(); 
     } 
     if(!emailValid || !emailReady){ 
      valid = false; 
      Snackbar.make(svDaftar,"Email sudah terdaftar, gunakan email yang lain.", Snackbar.LENGTH_SHORT).show(); 
     } 
     if(!emailKlik){ 
      valid = false; 
      Snackbar.make(svDaftar,"Klik tombol periksa email untuk memeriksa email valid.", Snackbar.LENGTH_SHORT).show(); 
     } 
     return valid; 
    } 

    public void berikutnyaDaftar(View view) { 
     final LinearLayout layBerikutnya = (LinearLayout)findViewById(R.id.layBerikutnya); 
     final LinearLayout layDaftar = (LinearLayout)findViewById(R.id.layDaftar); 
     layBerikutnya.setVisibility(View.GONE); 
     layDaftar.setVisibility(View.VISIBLE); 
    } 

    public void sebelumnyaDaftar(View view) { 
     final LinearLayout layBerikutnya = (LinearLayout)findViewById(R.id.layBerikutnya); 
     final LinearLayout layDaftar = (LinearLayout)findViewById(R.id.layDaftar); 
     layBerikutnya.setVisibility(View.VISIBLE); 
     layDaftar.setVisibility(View.GONE); 
    } 

    private void cekEmail(){ 
     Query searchQuery = databaseReference.orderByChild("info/"); 
     searchQuery.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       Iterable<DataSnapshot> snapshotIterator = dataSnapshot.getChildren(); 
       Iterator<DataSnapshot> iterator = snapshotIterator.iterator(); 
       TokoUpload infoToko = new TokoUpload(); 
       while((iterator.hasNext())){ 
        infoToko = iterator.next().getValue(TokoUpload.class); 
       } 
       emailList.add(infoToko.getEmail()); 
       emailReady = true; 
      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) {} 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) {} 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) {} 

      @Override 
      public void onCancelled(DatabaseError databaseError) {} 
     }); 
    } 

    public void uploadGambar(View view) { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
     alertDialogBuilder 
       .setMessage("Upload Foto") 
       .setCancelable(true) 
       .setPositiveButton("Kamera",new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog,int id) { 
         ambilGambar(); 
        } 
       }); 
     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 
    } 

    public void uploadGambar2(View view) { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
     alertDialogBuilder 
       .setMessage("Upload Foto") 
       .setCancelable(true) 
       .setPositiveButton("Kamera",new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog,int id) { 
         ambilGambar2(); 
        } 
       }); 

     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 
    } 

    private void ambilGambar() { 
     Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(cameraIntent, 1); 
    } 

    private void ambilGambar2() { 
     Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(cameraIntent, 2); 
    } 

    private void removeImg1() { 
     SelectImage.setImageResource(R.drawable.ic_add_img); 
     btRemove = (ImageButton)findViewById(R.id.btRemove1); 
     btRemove.setVisibility(View.GONE); 
     foto = false; 
    } 

    private void removeImg2() { 
     SelectImage2.setImageResource(R.drawable.ic_add_img2); 
     btRemove2 = (ImageButton)findViewById(R.id.btRemove2); 
     btRemove2.setVisibility(View.GONE); 
     foto2 = false; 
    } 

    public void removeImg1v(View view) { 
     removeImg1(); 
    } 

    public void removeImg2v(View view) { 
     removeImg2(); 
    } 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     super.onActivityResult(requestCode, resultCode, data); 

     if (resultCode == RESULT_OK && data != null && data.getData() != null && ((requestCode==Image_Request_Code)||(requestCode==Image_Request_Code2))) { 
      FilePathUri = data.getData(); 
      try { 
       Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePathUri); 
       baos = new ByteArrayOutputStream(); 
       bitmap = getResizedBitmap(bitmap, 640); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos); 
       compImg = baos.toByteArray(); 
       Bitmap bitmap2 = BitmapFactory.decodeByteArray(compImg,0,compImg.length); 

       if (requestCode == Image_Request_Code) { 
        SelectImage.setImageBitmap(bitmap2); 
        btRemove = (ImageButton)findViewById(R.id.btRemove1); 
        btRemove.setVisibility(View.VISIBLE); 
        foto = true; 
       }else if(requestCode == Image_Request_Code2) { 
        SelectImage2.setImageBitmap(bitmap2); 
        btRemove2 = (ImageButton)findViewById(R.id.btRemove2); 
        btRemove2.setVisibility(View.VISIBLE); 
        foto2 = true; 
       } 
       Snackbar.make(svDaftar,"Foto berhasil dipilih.", Snackbar.LENGTH_SHORT).show(); 
      } 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     if ((requestCode == 1)||(requestCode == 2)||(requestCode == 3)||(requestCode == 4)) { 
      try { 
       Bitmap bitmap = (Bitmap) data.getExtras().get("data"); 
       baos = new ByteArrayOutputStream(); 
       bitmap = getResizedBitmap(bitmap, 640); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos); 
       compImg = baos.toByteArray(); 
       Bitmap bitmap2 = BitmapFactory.decodeByteArray(compImg, 0, compImg.length); 
       if (requestCode == 1) { 
        SelectImage.setImageBitmap(bitmap2); 
        btRemove = (ImageButton) findViewById(R.id.btRemove1); 
        btRemove.setVisibility(View.VISIBLE); 
        foto = true; 
       } else if (requestCode == 2) { 
        SelectImage2.setImageBitmap(bitmap2); 
        btRemove2 = (ImageButton) findViewById(R.id.btRemove2); 
        btRemove2.setVisibility(View.VISIBLE); 
        foto2 = true; 
       } 
       Snackbar.make(svDaftar, "Foto berhasil dipilih.", Snackbar.LENGTH_SHORT).show(); 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    } 

    private Bitmap getResizedBitmap(Bitmap image, int maxSize) { 
     int width = image.getWidth(); 
     int height = image.getHeight(); 
     float bitmapRatio = (float) width/(float) height; 
     if (bitmapRatio > 1) { 
      width = maxSize; 
      height = (int) (width/bitmapRatio); 
     } else { 
      height = maxSize; 
      width = (int) (height * bitmapRatio); 
     } 
     return Bitmap.createScaledBitmap(image, width, height, true); 
    } 

    public void tandaiLokasi(View view) { 
     Intent semua = new Intent(this, MapsActivity.class); 
     semua.putExtra("id","daftar"); 
     startActivity(semua); 
    } 
}