android - android代码我想尝试计算但是当我在itemselection listener case0中初始化cal1()方法时它崩溃了请告诉我解决方案
问题描述
public class MainActivity extends AppCompatActivity {
Spinner s1,s2;
TextView t1,t2,t3;
String ops1,ops2;
String[] op1={"Inclusive","+3%","+5%","+12%","+18%","+28%"};
String[] op2={"Exclusive","-3%","-5%","-12%","-18%","-28%"};
ArrayAdapter<String> adapter,adapter2;
EditText e1,et1,et2,et3;
Button b1;
double a,b,c,x;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
s1 = (Spinner) findViewById(R.id.s1);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, op1);
s1.setAdapter(adapter);
s2 = (Spinner) findViewById(R.id.s2);
adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, op2);
s2.setAdapter(adapter2);
t1=(TextView)findViewById(R.id.tc);
t2=(TextView)findViewById(R.id.ts);
t3=(TextView)findViewById(R.id.ti);
e1=(EditText)findViewById(R.id.e1) ;
et1=(EditText)findViewById(R.id.et1);
et2=(EditText)findViewById(R.id.et2);
et3=(EditText)findViewById(R.id.et3);
b1=(Button)findViewById(R.id.bt1);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
t1.setText("CGST");
t2.setText("SGST");
t3.setText("IGST");
}
});
s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position)
{
case 0:
t1.setText("CGST(1.5%)");
t2.setText("SGST(1.5%)");
t3.setText("IGST(3%)");
cal1(); //error pop due to this
break;
case 1:
t1.setText("CGST(2.5%)");
t2.setText("SGST(2.5%)");
t3.setText("IGST(5%)");
break;
case 2:
t1.setText("CGST(6%)");
t2.setText("SGST(6%)");
t3.setText("IGST(12%)");
break;
case 3:
t1.setText("CGST(9%)");
t2.setText("SGST(9%)");
t3.setText("IGST(18%)");
break;
case 4:
t1.setText("CGST(14%)");
t2.setText("SGST(14%)");
t3.setText("IGST(28%)");
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
s2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position)
{
case 0:
t1.setText("CGST(-1.5%)");
t2.setText("SGST(-1.5%)");
t3.setText("IGST(-3%)");
break;
case 1:
t1.setText("CGST(-2.5%)");
t2.setText("SGST(-2.5%)");
t3.setText("IGST(-5%)");
break;
case 2:
t1.setText("CGST(-6%)");
t2.setText("SGST(-6%)");
t3.setText("IGST(-12%)");
break;
case 3:
t1.setText("CGST(-9%)");
t2.setText("SGST(-9%)");
t3.setText("IGST(-18%)");
break;
case 4:
t1.setText("CGST(-14%)");
t2.setText("SGST(-14%)");
t3.setText("IGST(-28%)");
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
private void cal1()
{
x=Double.parseDouble(e1.getText().toString()); //from here
}
}
请查看//错误,就像它使应用程序崩溃一样我想计算但当我在项目选择侦听器案例中初始化 cal1() 方法时:0 它崩溃请告诉我解决方案获得解决方案后请给出一定的建议采用不同的方法后,它再次崩溃
解决方案
-> 在您的代码中,将您的开关案例从 {0,1,2,3,4} 更改为 {1,2,3,4,5},因为位置 0 是数组的第 0 个索引。
s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position)
{
case 1:
t1.setText("CGST(1.5%)");
t2.setText("SGST(1.5%)");
t3.setText("IGST(3%)");
cal1(); //error pop due to this
break;
case 2:
t1.setText("CGST(2.5%)");
t2.setText("SGST(2.5%)");
t3.setText("IGST(5%)");
break;
case 3:
t1.setText("CGST(6%)");
t2.setText("SGST(6%)");
t3.setText("IGST(12%)");
break;
case 4:
t1.setText("CGST(9%)");
t2.setText("SGST(9%)");
t3.setText("IGST(18%)");
break;
case 5:
t1.setText("CGST(14%)");
t2.setText("SGST(14%)");
t3.setText("IGST(28%)");
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
s2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position)
{
case 1:
t1.setText("CGST(-1.5%)");
t2.setText("SGST(-1.5%)");
t3.setText("IGST(-3%)");
break;
case 2:
t1.setText("CGST(-2.5%)");
t2.setText("SGST(-2.5%)");
t3.setText("IGST(-5%)");
break;
case 3:
t1.setText("CGST(-6%)");
t2.setText("SGST(-6%)");
t3.setText("IGST(-12%)");
break;
case 4:
t1.setText("CGST(-9%)");
t2.setText("SGST(-9%)");
t3.setText("IGST(-18%)");
break;
case 5:
t1.setText("CGST(-14%)");
t2.setText("SGST(-14%)");
t3.setText("IGST(-28%)");
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
-> 总是尝试调试你的代码并找出错误。这将有助于轻松找出您的错误。
推荐阅读
- android - 我无法在android studio中更改操作栏的颜色,它卡在黑色中
- c++ - 点击获取价值
- c - 在 C 中使用 strcpy、strcat、sprintf 等后 SDL_CreateTextureFromSurface 崩溃
- generics - 公共函数“get_from_seed”中如何使用公共和配对特征
- r - 如何使用 Vegan 在 R 中绘制稀疏曲线?
- ruby-on-rails - 在计算值中搜索
- ios - 在 Swift/更好的方法中共享视图之间的数据?
- python - 模型摘要为空
- html - 如何在适合句子长度的文本旁边放置一个图标?
- c# - 如何将枚举加开关代码结构转换为“面向对象结构”?