【发布时间】:2013-07-08 02:53:14
【问题描述】:
我正在从菜单项调用一个对话框,并且我在该对话框中有一个按钮,并在按下按钮时尝试执行某些操作。我的代码部分如下:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.itTip:
final Dialog tipCalculator = new Dialog(this);
tipCalculator.setTitle("Tip Calculator");
tipCalculator.setContentView(R.layout.tip_layout);
totalBill = (EditText) findViewById(R.id.editTBill);
tips = (EditText) findViewById(R.id.editTTip);
calculate = (Button) findViewById(R.id.bCalcTip);
tvResult = (TextView) findViewById(R.id.tvTipResult);
calculate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Calculate clicked", Toast.LENGTH_SHORT).show();
}
});
tipCalculator.setCancelable(true);
tipCalculator.show();
break;
}
return super.onOptionsItemSelected(item);
}
当我在没有 setOnClickListener 的情况下运行我的应用程序时,它可以正常工作并完美地显示对话框。但是每当我尝试使用监听器时,它就会崩溃。我检查了 LogCat,实际上并不能清楚地理解这个问题。希望任何人都可以在这里帮助我。
【问题讨论】:
-
尝试用 v.getContext() 替换 getApplicationContext()
-
实际上我尝试在 OnClick(View v) 方法中保持空白,但它仍然崩溃
-
是
calculatenull?尝试在日志中显示,在calculate.setOnClickListener(),Log.d("Button Calculate", "Is null: "+ calculate == null);之前调用这个 -
好吧,你不能在 Log.d 中使用布尔值,无论如何,计算实际上显示为空:/
-
@LutfulKabir 我知道,除非使用字符串连接。现在您收到了
NullPointerException,您是否使用setContentView()加载了布局?
标签: android dialog onclicklistener onitemclicklistener