Java (Android)将TextView转换为A-Z的随机数生成器?
我正在制作一个Android应用程序,它(应该):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
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代码中。