1

I am making a voting app which stores click in firebase. When any of the two buttons is pressed, it should to go to a common layout activity(votes.java). This happens for Btn1 but the app crashes when clicking Btn2.

MainActivity.java

import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.os.Handler; import com.firebase.client.Firebase; public class Main2Activity extends AppCompatActivity { private Firebase mRootRef; private Button mBtn1; private Button mBtn2; int counter = 0; int counter1 = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Firebase.setAndroidContext(this); mBtn1 = (Button) findViewById(R.id.btn1); mBtn2 = (Button) findViewById(R.id.btn2); mBtn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (v.equals(mBtn1)) { Intent i1= new Intent(Main2Activity.this, Votes.class); startActivity(i1); mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 1"); Firebase mRefChild = mRootRef.child("Votes"); counter++; mRefChild.setValue(counter); } mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 2"); mBtn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (v.equals(mBtn2)) { Intent i2= new Intent(Main2Activity.this, Votes.class); startActivity(i2); Firebase mRefChild = mRootRef.child("Votes"); counter1++; mRefChild.setValue(counter1); } } }); } }); }} 

Thanks.

2
  • Stack trace please from your log cat. Commented Jan 31, 2017 at 14:47
  • 1
    your 2nd button listener is inside 1st listener, try put outside from the first one Commented Jan 31, 2017 at 14:49

3 Answers 3

1

This is because your click listener for button 2 is inside the click listener for button 1. You need to initialize different onClick Listeners for different buttons.

Try this:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Firebase.setAndroidContext(this); mBtn1 = (Button) findViewById(R.id.btn1); mBtn2 = (Button) findViewById(R.id.btn2); mBtn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i1= new Intent(Main2Activity.this, Voted.class); startActivity(i1); mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 1"); Firebase mRefChild = mRootRef.child("Votes"); counter++; mRefChild.setValue(counter); }); mBtn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 2"); Intent i2= new Intent(Main2Activity.this, Voted2.class); startActivity(i2); Firebase mRefChild = mRootRef.child("Votes"); counter1++; mRefChild.setValue(counter1); } }); 
Sign up to request clarification or add additional context in comments.

Comments

1

This should fix it :

public class Main2Activity extends AppCompatActivity { private Firebase mRootRef; private Button mBtn1; private Button mBtn2; int counter = 0; int counter1 = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Firebase.setAndroidContext(this); mBtn1 = (Button) findViewById(R.id.btn1); mBtn2 = (Button) findViewById(R.id.btn2); mBtn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i1= new Intent(Main2Activity.this, Voted.class); startActivity(i1); mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 1"); Firebase mRefChild = mRootRef.child("Votes"); counter++; mRefChild.setValue(counter); }); mBtn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 2"); Intent i2= new Intent(Main2Activity.this, Voted2.class); startActivity(i2); Firebase mRefChild = mRootRef.child("Votes"); counter1++; mRefChild.setValue(counter1); } }); } } 

Comments

1

The problem is you are trying to handle click listener of Button 2 inside Button 1. This should fix it :

public class Main2Activity extends AppCompatActivity { private Firebase mRootRef; private Button mBtn1; private Button mBtn2; int counter = 0; int counter1 = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Firebase.setAndroidContext(this); mBtn1 = (Button) findViewById(R.id.btn1); mBtn2 = (Button) findViewById(R.id.btn2); mBtn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i1= new Intent(Main2Activity.this, Voted.class); startActivity(i1); mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 1"); Firebase mRefChild = mRootRef.child("Votes"); counter++; mRefChild.setValue(counter); }); mBtn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 2"); Intent i2= new Intent(Main2Activity.this, Voted2.class); startActivity(i2); Firebase mRefChild = mRootRef.child("Votes"); counter1++; mRefChild.setValue(counter1); } }); } } 

1 Comment

The counter in Firebase doesn't get increased anymore now. It would increase before.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.