2017-01-31 4 views
1

私はfirebaseにクリックを保存する投票アプリケーションを作っています。 2つのボタンのいずれかを押すと、共通のレイアウトアクティビティ(votes.java)に移動する必要があります。これはBtn1で発生しますが、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); 

        } 
       } 

      }); 
     } 
    }); 

}} 

感謝。

+0

スタックトレースしてください:

はこれを試してみてください。 – Divers

+1

あなたの第2ボタンリスナーが第1リスナーの内側にある場合は、最初のリスナーから外に出てください –

答えて

1

これはあなたのためでありますボタン2のクリックリスナーは、ボタン1のクリックリスナーの内側にあります。ボタンごとに異なるonClickリスナーを初期化する必要があります。あなたのログcatから

@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

これはそれを修正する必要があります

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

を問題は、あなたがこれはそれを修正する必要がボタン1 内のボタン2のリスナーをクリック扱うしようとしている次のとおりです。

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); 
      } 

     }); 

} 
} 
+0

今度はFirebaseのカウンターが増えません。それは前に増加するでしょう。 – Abhi

関連する問題