(Android)随机数生成器将TextView变成A-Z?

时间:2014-06-12 16:07:33

标签: java android

我正在制作(应该)的Android应用程序:
1.在按钮单击时获取微调器的值 2.如果值为2,则在1和2之间设置一个随机数 3.如果为1,将TextView文本设置为“A”
4.如果为2,将TextView文本设置为“B”

我收到错误“NullPointerException”

我的代码在这里:

package org.infinitech.iguess.app;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends ActionBarActivity{
    public Button button;
    public TextView text=(TextView)findViewById(R.id.answer);
    public Spinner a=(Spinner)findViewById(R.id.choices);
    public String b;
    public int d;
    public Random r=new Random();
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.button);
        text=(TextView)findViewById(R.id.textBox);
        button.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                b=(String)a.getSelectedItem();
                if(b=="2"){
                    d=2+r.nextInt(1);
                    if(d==1){
                        text.setText("A");
                    }
                    else if(d==2){
                        text.setText("B");
                    }
                }
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        int id=item.getItemId();
        if(id==R.id.action_settings){
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

1 个答案:

答案 0 :(得分:0)

您在调用onCreate之前分配视图,将它们移动到onCreate方法中。另外,在您比较字符串时,将if语句更改为使用.equals而不是==。

代码中的另一个问题是您将2个不同的TextView分配给同一个TextView对象(R.id.answer和R.id.textBox)。我在下面的代码中删除了第二个作业。

import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends ActionBarActivity{
    public Button button;
    public TextView text;
    public Spinner a;
    public String b;
    public int d;
    public Random r=new Random();
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        text = (TextView)findViewById(R.id.answer);
        a=(Spinner)findViewById(R.id.choices);
        button=(Button)findViewById(R.id.button);

        setContentView(R.layout.activity_main);
        button.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                b=(String)a.getSelectedItem();
                if(b.equals("2")){
                    d=2+r.nextInt(1);
                    if(d==1){
                        text.setText("A");
                    }
                    else if(d==2){
                        text.setText("B");
                    }
                }
            }
        });
    }