2017-01-04 8 views
0

これは私のDisplayBooksクラスです:他のアクティビティの計算のためにアクティビティ内のTextViewに保存されているデータを転送するにはどうすればよいですか?

public class DisplayBooks extends AppCompatActivity 

private FirebaseAuth myAuth; 
private DatabaseReference myDatabase; 
private TextView book1display,book2display,book3display,book4display,book5display,book6display,book7display; 

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

    myAuth = FirebaseAuth.getInstance(); 

    myDatabase = FirebaseDatabase.getInstance().getReference(); 

    book1display = (TextView) findViewById(R.id.book1display); 
    book2display = (TextView) findViewById(R.id.book2display); 
    book3display = (TextView) findViewById(R.id.book3display); 
    book4display = (TextView) findViewById(R.id.book4display); 
    book5display = (TextView) findViewById(R.id.book5display); 
    book6display = (TextView) findViewById(R.id.book6display); 
    book7display = (TextView) findViewById(R.id.book7display); 


    String user_id = myAuth.getCurrentUser().getUid(); 
    DatabaseReference userid_database = myDatabase.child(user_id); 

    DatabaseReference book1 = userid_database.child("Books").child("Book 1").child("Page"); 
    DatabaseReference book2 = userid_database.child("Books").child("Book 2").child("Page"); 
    DatabaseReference book3 = userid_database.child("Books").child("Book 3").child("Page"); 
    DatabaseReference book4 = userid_database.child("Books").child("Book 4").child("Page"); 
    DatabaseReference book5 = userid_database.child("Books").child("Book 5").child("Page"); 
    DatabaseReference book6 = userid_database.child("Books").child("Book 6").child("Page"); 
    DatabaseReference book7 = userid_database.child("Books").child("Book 7").child("Page"); 


    book1.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String text = dataSnapshot.getValue(String.class); 
      book1display.setText(text); 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    book2.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String text = dataSnapshot.getValue(String.class); 
      book2display.setText(text); 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    book3.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String text = dataSnapshot.getValue(String.class); 
      book3display.setText(text); 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    book4.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String text = dataSnapshot.getValue(String.class); 
      book4display.setText(text); 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    book5.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String text = dataSnapshot.getValue(String.class); 
      book5display.setText(text); 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    book6.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String text = dataSnapshot.getValue(String.class); 
      book6display.setText(text); 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    book7.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String text = dataSnapshot.getValue(String.class); 
      book7display.setText(text); 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 


} 


} 

は、以下の出力例です。私は、絵の中の数字を他のアクティビティで計算したいのです。

これは私の他の活動です:

public class HowMuch extends AppCompatActivity 


private TextView howmuch1,howmuch2; 
TextView hay; 
Button button2; 
private DatabaseReference myDatabase; 
private FirebaseAuth myAuth; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_how_much); 

    myAuth=FirebaseAuth.getInstance(); 

    myDatabase= FirebaseDatabase.getInstance().getReference(); 
    howmuch1=(TextView)findViewById(R.id.howmuch1); 
    howmuch2=(TextView)findViewById(R.id.howmuch2); 

    hay=(TextView)findViewById(R.id.hay); 

    String user_id= myAuth.getCurrentUser().getUid(); 
    DatabaseReference userid_database=myDatabase.child(user_id); 

    DatabaseReference book1=userid_database.child("Books").child("Book 1").child("Page"); 
    DatabaseReference book2=userid_database.child("Books").child("Book 2").child("Page"); 


    book1.addValueEventListener(new ValueEventListener() 
    { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) 
     { 
      String text= dataSnapshot.getValue(String.class); 

      int value=Integer.parseInt(text); 
      int value1=value/2; 

      String x= String.valueOf(value1); 

      howmuch1.setText(x); 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

} 

私はそのBOOK2ため、BOOK3などのように書けば、私はcalculattionを作ることができますが、私はまた、これらの値の合計を作りたいです。 Hovewer、私は新しい計算をするためにそれらの値を転送することができませんでした。

public void transfer(View view){ 
String value = book1display.getText().toString(); 
Intent intent = new Intent(DisplayBooks.this, HowMuch.class); 
intent.putExtra("key",value); 
startActivity(intent); 
} 

そしてHowMuchクラスにこれを追加する:私はこの書き込み、私のDisplayBooks活動から値を転送しようとした

String value = getIntent().getExtras().getString("key"); 
hay.setText(value); 

をしかし、それは動作しませんでした。

+0

受信データを送信します'と意図して渡す。 –

答えて

1

それは

String value = getIntent().getStringExtra("key"); 
hay.setText(value); 

編集する必要があります:参照のリンク:

https://developer.android.com/training/sharing/send.html

あなたは `のArrayList を作成する必要があり、データ https://developer.android.com/training/sharing/receive.html

+0

動作しませんでした。 "メソッド 'getString(java.lang.String)'を解決できません" –

+0

book1display textViewで試してみましたが、その値があなたの 'transfer'メソッドの他のアクティビティに送信しているtextViewだからです。 –

+0

申し訳ありませんが、今すぐ変更するgetStringExtra()にする必要があります。 –

0
Bundle receivedBundle = getIntent().getExtras(); 
if (receivedBundle != null) { 
    String extraString = receivedBundle.getString("key"); 
    int extraInt = receivedBundle.getInt("key"); 
} 
+0

OPがバンドル内のキーと値のペアを設定していないのが表示されるため、これは機能しません。代わりに、キーと値のペアがインテントに直接追加されます。 –

関連する問題