2016-10-20 5 views
-1

Was ich versuche zu tun, war, um Daten zu Firebase nach dem Drücken der Schaltfläche Update zu bekommen. aber es ist nicht zur nächsten Aktivität beabsichtigt. Es bleibt einfach dort und nichts ist passiert. Gibt es etwas, das mir bei einem Firebase-Code fehlt?Schaltfläche nicht Absicht nach dem Klicken

public class Details extends AppCompatActivity implements View.OnClickListener { 
    EditText name, matric, ic, phone, department, roomBlock, roomLevel, roomNumber; 
    Button update; 
    private FirebaseAuth auth; 
    private DatabaseReference mDatabase; 
    String mUserId; 

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

     name = (EditText)findViewById(R.id.editText2); 
     matric = (EditText)findViewById(R.id.editText3); 
     ic = (EditText)findViewById(R.id.editText4); 
     phone = (EditText)findViewById(R.id.editText5); 
     department = (EditText)findViewById(R.id.editText6); 
     roomBlock = (EditText)findViewById(R.id.editText7); 
     roomLevel = (EditText)findViewById(R.id.editText8); 
     roomNumber = (EditText)findViewById(R.id.editText9); 

     update = (Button)findViewById(R.id.btnupdate); 

     auth = FirebaseAuth.getInstance(); 

     mDatabase = FirebaseDatabase.getInstance().getReference(); 
     mUserId = FirebaseAuth.getInstance().getCurrentUser().getUid(); 

    } 

    @Override 
    public void onClick(View view){ 
     if(view == update){ 
      final String key = mDatabase.child("data").push().getKey(); 
      final String name1 = name.getText().toString().trim(); 
      final String matric1 = matric.getText().toString().trim(); 
      final String ic1 = ic.getText().toString().trim(); 
      final String phone1 = phone.getText().toString().trim(); 
      final String department1 = department.getText().toString().trim(); 
      final String roomBlock1 = roomBlock.getText().toString().trim(); 
      final String roomLevel1 = roomLevel.getText().toString().trim(); 
      final String roomNumber1 = roomNumber.getText().toString().trim(); 

      Item newItem = new Item(name1, matric1, ic1, phone1, department1, roomBlock1, roomLevel1, roomNumber1); 
      Map<String, Object> itemValues = newItem.toMap(); 
      Map<String, Object> childUpdates = new HashMap<>(); 
      childUpdates.put("/data/" + mUserId + "/" + key, itemValues); 
      mDatabase.updateChildren(childUpdates); 

      Toast.makeText(Details.this, "Details Updated!", Toast.LENGTH_SHORT).show(); 
      Intent intent = new Intent(Details.this, DoorActivity.class); 
      startActivity(intent); 
     } 

    } 
} 

Antwort

0

Sie haben nicht festgelegt onClickListener auf Ihre Button.

update = (Button)findViewById(R.id.btnupdate); 
update.setOnClickListener(this); 
+0

Ich fühle mich jetzt dumm, so klein Detail fehlt. Vielen Dank! –

0

Ich denke, Ihr Problem ist hier:

if(view == update){ 

Sie es zum Beispiel wie dies tun könnte:

@Override 
    public void onClick(View view){ 

    switch(view.getId()){ 

    case(R.id.btnupdate): 

    //do you stuff here 

    break; 

    } 
    } 

Sie die Ansicht auf Ihre Taste zu vergleichen, aber Sie sollte es mit der Methode getId() tun.

Auch können Sie es tun, ohne in Ihrer Tätigkeit Umsetzung OnClickListener und setzen Sie ihn auf jeder Taste wie:

update.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //do your stuff 
      } 
     }); 
0

hinzufügen clicklistener auf Ihre Schaltfläche

yourButton.setOnClickListener((this); 

und in der onClick

public void onClick(View v) { 
    if(v.getId==R.id.yourButtonId){ 
     // Perform action here 

    } 
}    
}); 

viel Glück

Verwandte Themen