Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java (Android)将TextView转换为A-Z的随机数生成器?_Java_Android - Fatal编程技术网

Java (Android)将TextView转换为A-Z的随机数生成器?

Java (Android)将TextView转换为A-Z的随机数生成器?,java,android,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 andro

我正在制作一个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);
    }
}

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

代码中的另一个问题是将两个不同的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");
                    }
                }
            }
        });
    }

你有问题吗?推荐阅读:@Kevin Workman抱歉,现在添加了它。
如果(b==“2”){
看起来不太好。看看你的错误在哪一行?你的完整堆栈跟踪在哪里?你读过我给你的链接了吗?@Kevin Workman我不再得到“NullPointerException”,但每次我尝试运行它时,应用程序都会崩溃。事实上textBox是一个不会更改的不同TextView。这是说明。如果你不以编程方式更改它,那么为什么要将它包含在代码中?请尝试我的代码并告诉它是否有效。我去掉了textBox变量。如果它不需要以编程方式更改,你是对的它不应该出现在Java代码中。