我正在制作(应该)的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);
}
}
答案 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");
}
}
}
});
}