我在Button setOnClickListener()方法上遇到NullException错误。我有点大惊小怪为什么会这样。请记住,这是我的第一个Android应用程序,我认为肯定会有一些运行时错误(没有编译错误)。
btnNaira.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dollarToNaira();
}
});
可以在这里找到dollarToNaira()方法:
public void dollarToNaira() {
try {
dollarAmt = txtAmount.getText().toString();
nairaAmt = (Double.parseDouble(dollarAmt) * 199.00);
lblOutput.setText(dollarAmt + "U.S. Dollars = " + nairaAmt + " Nigerian Naira.");
}catch(Exception ex) {
message = "Please enter a valid numerical amount";
lblOutput.setText(message);
}finally {
txtAmount.requestFocus();
txtAmount.selectAll();
}
}
请告诉我我做错了什么我想知道是什么原因导致setOnClickListener方法返回NULL。谢谢!
编辑:这是整个onCreate()方法,我不相信我犯了错误:
protected void onCreate(Bundle savedInstanceState) {
txtAmount = (EditText) findViewById(R.id.txtAmount);
btnNaira = (Button) findViewById(R.id.btnNaira);
btnCFA = (Button) findViewById(R.id.btnCFA);
lblOutput = (TextView) findViewById(R.id.lblOutput);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//set up event listener on btnNaira and btnCFA
btnNaira.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dollarToNaira();
}
});
btnCFA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dollarToCFA();
}
});
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
答案 0 :(得分:1)
您的代码没有问题。 我猜你在初始化按钮和文本视图时犯了一个错误。
1-确保在方法中定义侦听器,例如 Button btnDoSomething = (Button)findViewById(R.id.idOfButton);
,
我认为你已经在课堂上定义了这个。
2-我猜你已经定义了按钮或文本视图, 但你没有初始化它们,所以它们是空的。 这是初始化按钮
的示例setOnClickListener
现在你可以{{1}}了解它。
答案 1 :(得分:0)
你应该这样写
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtAmount = (EditText) findViewById(R.id.txtAmount);
btnNaira = (Button) findViewById(R.id.btnNaira);
btnCFA = (Button) findViewById(R.id.btnCFA);
lblOutput = (TextView) findViewById(R.id.lblOutput);
确保在初始化按钮View之前致电setContentView(R.layout.activity_main);
。
希望它有所帮助。