为什么当我按下按钮时,我的应用程序崩溃,以及如何修复它

问题描述:

我正在尝试为卡片游戏制作一个基本的骰子滚轮。它在两个的第二个屏幕上。当我按下按钮打开它时,屏幕会打开,但是当我点击骰子按钮时,应用程序就会崩溃。我正在使用最新版本的Android Studio。这里是我的代码:为什么当我按下按钮时,我的应用程序崩溃,以及如何修复它

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

一个有用的阅读新的Android开发http://stackoverflow.com/questions/23353173/uncomfort-myapp-has-stopped-how-can-i-solve-this – trooper

你的应用程序崩溃,因为你试图将int值置于setText()方法。

这里:

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