2015-10-11 113 views
0

我正在为android创建一个随机数生成器,而我是Java新手。有了一些帮助,我设法做出了一些应该可以工作的东西,但是当我尝试在模拟器中启动应用程序时,它会崩溃。下面是我使用的代码:随机数发生器崩溃

public class MainActivity extends AppCompatActivity implements OnClickListener { 

EditText RndNbGenNbs1, RndNbGenNbs2; 
TextView RndNbGenResult; 

int MinNumber; 
int MaxNumber; 
String Result; 
Random Rnd = new Random(); 
String Number1; 
String Number2; 
Button btn; 

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

    RndNbGenNbs1 = (EditText) findViewById(R.id.RndNbGenNbs1); 
    RndNbGenNbs2 = (EditText) findViewById(R.id.RndNbGenNbs2); 
    RndNbGenResult = (TextView) findViewById(R.id.RndNbGenResult); 
    Number1 = RndNbGenNbs1.getText().toString(); 
    Number2 = RndNbGenNbs2.getText().toString(); 
    btn = (Button) findViewById(R.id.RndNbGenBtn1); 

} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.RndNbGenBtn1: 

      MinNumber = Integer.parseInt(Number1); 
      MaxNumber = Integer.parseInt(Number2); 

      Rnd.nextInt(MaxNumber - MinNumber); 

      Result = Rnd.toString(); 

      RndNbGenResult.setText(Result); 
      break; 


    } 

} 

}

+0

'String Number1 = RndNbGenNbs1.getText()。toString();''和'String Number2 = RndNbGenNbs2.getText()。toString();'在您的代码的初始化块中。因为'RndNbGenNbs1'和'RndNbGenNbs2'在调用onCreate()之前没有设置,所以它应该抛出一个'NullPointerException'并且崩溃。尝试调试,而不是简单地运行您的项目。 – GiantTree

+0

如果这里有帮助的是LogCat日志http://pastebin.com/tUuBH6qW – jeepingviini

回答

0

从你的日志:

ComponentInfo {com.jeepingviini.randomnumbergenerator/com.jeepingviini.randomnumbergenerator.MainActivity}: 的java.lang .ClassCastException: android.support.v7.widget.AppCompatTextView无法投射到 android.widget.EditText

您正试图将AppCompatTextView投射到EditText

检查RndNbGenNbs1RndNbGenNbs2RndNbGenResult,一个(或全部)它们被声明为XML文件中AppCompatTextView,当你试着将它转换为EditText在Java代码中。

您需要选择是否需要EditTextAppCompatTextView

+0

我现在会检查它。 – jeepingviini

+0

谢谢,现在我不会崩溃,直到我点击按钮。 – jeepingviini

+0

如果它解决了您的问题,您可以接受答案。如果您有其他问题,请打开另一个问题。 – Rami