2016-04-11 9 views
0

ユーザがビットマップをクリックするたびにスコア変数に値を加算したい。スコアは別のクラスで使用されます。しかし、今のところ私はそれを動作させることはできません、私は実行時にエラーが表示されませんが、それは常に0(テキストビューのデフォルトの文字列)を表示します。別のスクリプト(Java、Androidスタジオ)で整数を設定する

これはスコアをカウントし、別のスクリプトでそれを「設定」するメソッドです。

@Override public void run(){ 

      Point size = new Point(); 
      Display display = getWindowManager().getDefaultDisplay(); 
      display.getSize(size); 
      Random wR = new Random(); 
      Random hR = new Random(); 
      int width = size.x; 
      int height = size.y; 
      int randomW = wR.nextInt(width-50)+50; 
      int randomH = hR.nextInt(height-50)+50; 

      CheckScore scoreClass = new CheckScore(); 

      while (running){ 

       if(!surface.getSurface().isValid()) 
        continue; 

       Canvas canvas = surface.lockCanvas(); 
       canvas.drawColor(Color.rgb(85, 107, 47)); 
       canvas.drawBitmap(incect[frame], randomW, randomH, null); 

       if ((touch.x >= randomW && touch.x <(randomW + xBitmap) && (touch.y >= randomH && touch.y < (randomH+yBitmap)) && move == true)){ 
        randomW = wR.nextInt(width-50)+50; 
        randomH = hR.nextInt(height-50)+50; 
        if (randomW > width - 200){ 
         randomW = width - 200; 
        } 
        if (randomH > height - 200){ 
         randomH = height - 200; 
        } 
        canvas.drawBitmap(incect[frame], randomW, randomH, null); 
        hasMoved = true; 

        scoreClass.score = score; 
        score = score +1; 
       } 

そして、これがスコアを受け取ると、それを表示する必要がありますスクリプトです:

package com.example.bena.23; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TextView; 

public class CheckScore extends AppCompatActivity { 

    int score; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.score); 
     getScore(); 
    } 

    public void getScore(){ 
     TextView text = (TextView)findViewById(R.id.thisScore); 
     text.setText(Integer.toString(score)); 
    } 
} 

私はスクリプトサイズのためにメソッド(run())しか書いていませんでした。私が大事に私を助けてくれる人がいれば、大変感謝しています。

+0

[Androidでのアクティビティ間でデータを渡すにはどうすればいいですか?](http://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-on-android) –

+0

Androidで 'new Activity()'を使わないでください。 'Intent'を使う –

答えて

0

getScore()メソッドは、アクティビティが作成されたときにのみ呼び出しています。ユーザーがビットマップをクリックした後、メソッドを呼び出す必要があります。

また、このようなアクティビティをインスタンス化しないでください。あなたは、アクティビティを開く意図を使用したい場合(thisはあなたが別のを起動し、そこからの活動でもよい):私はあなたがあなたのスコアのためのJavaクラスを作成することをおすすめ

startActivity(new Intent(this, CheckScore.class)); 

、および静的変数に格納し、必要に応じてrun()メソッドで変更してください。 次に、setText()を実行すると、CheckScoreアクティビティで変数の値が取得されます。あなたのアイデアが間違っていると私を訂正してください:run()メソッドとCheckScoreは2つの異なるアクティビティです(同時に表示することはできません)。

+0

答えをありがとう、run()は別のアクティビティのメソッドで、CheckScoreはアクティビティです。スクリプトが非常に大きいので、私はrunメソッドを投稿しただけです。 – Taegos

+0

あなたの方法は働きました、ありがとう! – Taegos

関連する問題