2017-04-01 11 views
0

カードゲームの基本的なダイスローラーを作ろうとしています。 2つ目の画面に表示されます。ボタンを押すと画面が正常に表示されますが、サイコロボタンをクリックするとアプリがクラッシュします。私はAndroid Studioの最新バージョンを使用しています。ここに私のコードは次のとおりです。あなたがのsetText()メソッドにint型の値を入れしようとしているためボタンを押したときにアプリがクラッシュする理由と解決方法

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.view.View.OnClickListener; 
import android.widget.EditText; 
import android.widget.TextView; 
import java.util.Random; 
import static android.R.attr.value; 

public class Extras extends AppCompatActivity implements OnClickListener{ 

    Button btn1; 
    TextView numberGenerator; 

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


     btn1 = (Button) findViewById(R.id.diceButton); 

     btn1.setOnClickListener(this); 
     numberGenerator = (TextView)findViewById(R.id.numberGenerator); 

    } 


    @Override 

    public void onClick(View v) { 
     int min = 1; 
     int max = 6; 
     Random random = new Random(); 
     int value = random.nextInt(max - min) + min; 
     numberGenerator.setText(value+""); 

     if (v == btn1) { 
      numberGenerator.setText(value); 
     } 

    } 
    ... 
} 
+1

通常、アプリケーションがクラッシュすると、エラーメッセージまたは例外メッセージが表示されます。あなたがこれをしたら、これを私たちと共有したいと思うでしょう。 –

+1

新しいアンドロイドデベロッパーのための有益な読書http://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – trooper

答えて

2

あなたのアプリがクラッシュしています。ここで

if (v == btn1) { 
    numberGenerator.setText(value); 
} 

が代わりにしてみてください。

if (v == btn1) { 
    numberGenerator.setText(String.valueOf(value)); 
} 

をこれはあなたのスタックトレースを投稿動作しない場合。

+0

これはコンパイラーの一種の苦情だと思います – efekctive

+0

これはそれに答える。 'setText'は、' int'リソース識別子を取るためにオーバーロードされています。古い 'int'を渡すことはできません。 https://developer.android.com/reference/android/widget/TextView.html#setText(int) – trooper

関連する問題