单击#按钮时显示文本

时间:2012-03-05 20:18:21

标签: android

我希望在按下#时显示随机生成的表达式,如2 + 3 =我已经实现了这段代码,但是当我按下它时,应用程序崩溃了。

我的xml代码是:

<TextView
        android:id="@+id/randomNumberGen"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:textSize="45dp" />

Java代码是:

package org.example.question;

import java.util.Random;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class QuestionActivity extends Activity implements View.OnClickListener {
    /** Called when the activity is first created. */
    int fnum, snum;


Button one,two,three,four,five,six,seven,eight,nine,zero,minus,hash;
    TextView display;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

        final Random myRandom = new Random();

        display = (TextView)findViewById(R.id.randonNumberGen);

        //Buttons
        one= (Button) findViewById(R.id.keypad_1);
        two= (Button) findViewById(R.id.keypad_2);
        three= (Button) findViewById(R.id.keypad_3);
        four= (Button) findViewById(R.id.keypad_4);
        five = (Button) findViewById(R.id.keypad_5);
      six= (Button) findViewById(R.id.keypad_6);
        seven = (Button) findViewById(R.id.keypad_7);
        eight = (Button) findViewById(R.id.keypad_8);
        nine = (Button) findViewById(R.id.keypad_9);
        minus = (Button) findViewById(R.id.keypad_subtract);
        hash = (Button) findViewById(R.id.keypad_hash);


        one.setOnClickListener(this);     two.setOnClickListener(this);     three.setOnClickListener(this); 
        three.setOnClickListener(this);   four.setOnClickListener(this);     five.setOnClickListener(this);
        six.setOnClickListener(this);     seven.setOnClickListener(this);     eight.setOnClickListener(this);
        nine.setOnClickListener(this);     minus.setOnClickListener(this);      hash.setOnClickListener(this);

}

    public void onClick(View arg0) {
        View v = null;
        switch(v.getId()){  
        case R.id.keypad_hash:
            display.setText(fnum+"+"+ snum+"=");
             fnum = (int) ((double) ((Math.random() * 1000)) / 100.0);
             snum = (int) ((double) ((Math.random() * 1000)) / 100.0);
            break;
        }

     }
    public void requestFocus() {
        // TODO Auto-generated method stub

    }
}

当我单击“#”按钮时,应用程序崩溃。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

View v = null;
switch(v.getId()){  

你做不到。 vnull。请改为switch(arg0.getId())

编辑:格雷厄姆史密斯也指出,放线......

display.setText(fnum+"+"+ snum+"=");

...在您生成随机数后。

答案 1 :(得分:1)

从您声明的代码

中确定
int fnum, snum;

但在调用之前,它们未在代码中的任何位置设置:

display.setText(fnum+"+"+ snum+"=");

您可能会收到错误,但是没有日志/调试信息我无法告诉您。发布它们以确认这一点。

编辑:

在display.setText之后......然后设置值。您应该设置它们然后显示它们。

    case R.id.keypad_hash:

         fnum = (int) ((double) ((Math.random() * 1000)) / 100.0);
         snum = (int) ((double) ((Math.random() * 1000)) / 100.0);
         display.setText(fnum+"+"+ snum+"=");
        break;

下一步编辑:

如果你对你创建的随机int不太挑剔,你可以做类似的事情:

Random random = new Random();

fnum  = random.nextInt(100);
//nextInt(100) - upto the max value of 100
snum = random.nextInt(100);