2013-08-27 58 views
4

我有一个应用程序在这里添加数字。我在这里有4个edittext。我想要发生的事情是,当我在其中一个edittext中输入none时,它会假定我输入了0.怎么办?这里是我的代码:如何在没有输入时在edittext中将默认值设置为0?

public class Order extends Activity { 
Button GoBackHome; 
private Button button1; 
private EditText txtbox1,txtbox2,txtbox3,txtbox4; 
private TextView tv; 
Button PayNow; 

@Override 
public void onBackPressed() { 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.order); 

     GoBackHome = (Button) findViewById(R.id.gohomebutton); 
     PayNow = (Button) findViewById(R.id.button2); 
     txtbox1= (EditText) findViewById(R.id.editText1); 
     button1 = (Button) findViewById(R.id.button1); 
     tv = (TextView) findViewById(R.id.editText5); 
     txtbox2= (EditText) findViewById(R.id.editText2); 
     txtbox3= (EditText) findViewById(R.id.editText3); 
     txtbox4= (EditText) findViewById(R.id.editText4); 
     button1.setOnClickListener(new clicker()); 

     GoBackHome.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final Intent i = new Intent(Order.this, MainActivity.class);    
       startActivity(i); 
      } 
     }); 

     PayNow.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final Intent i = new Intent(Order.this, Payment.class);    
       startActivity(i); 
      } 
     }); 


} 


class clicker implements Button.OnClickListener 
{ 
    public void onClick(View v) 
    { 
     String a,b,c,d; 
     Integer vis; 
     a = txtbox1.getText().toString(); 
     b = txtbox2.getText().toString(); 
     c = txtbox3.getText().toString(); 
     d = txtbox4.getText().toString(); 
     vis = Integer.parseInt(a)*2+Integer.parseInt(b)*3+Integer.parseInt(c)*4+Integer.parseInt(d)*5; 
     tv.setText(vis.toString()); 
    } 
} 

} 
+0

注意:如果我进入了没有,然后点击计算按钮,我的应用程序崩溃。 – Kerv

回答

5

为图莎尔说你可以做,也可以在初始化的XML值。像

<EditText 
    android:name="@+id/editText1" 
    android:text="0"/> 

东西FYI也可能会发现它清洁处理上,如XML的按钮点击:

<Button 
    android:name="@+id/btn1" 
    android:onClick="handleClicks"/> 

,然后在Java中,你就会有一个公共无效方法:

public void handleClicks(View clickedView){ 
    if(clickedView.getId() == btn1.getId(){ 
     ... 
    } else if (...){} 
} 
+0

谢谢!谢谢你的帮助! – Kerv

1

初始化为:

txtbox1.setText("0"); 
+0

我将替换a = txtbox1.getText()。toString(); to a = txtbox1.setText(“0”);? – Kerv

+0

不只是初始化它,即在'.getText()'方法之前使用它#方法 – Tushar

+0

@Kerv不会解决你的问题,你必须得到文本〜 –

1

您可以在您的XML文件中设置android:hint="0",然后在您的代码中,您可以检查它是否为空(可能使用TextUtils.isEmpty())并将某些变量设置为0.

android:hint="0"将在您的EditText中出现“0”,但输入任何内容时“0”将消失。

然后你可以改变onClick()这样:

class clicker implements Button.OnClickListener { 
    public void onClick(View v) { 
     String a,b,c,d; 
     Integer vis; 
     a = txtbox1.getText().toString(); 
     b = txtbox2.getText().toString(); 
     c = txtbox3.getText().toString(); 
     d = txtbox4.getText().toString(); 

     try { 
      vis = Integer.parseInt(a)*2+Integer.parseInt(b)*3+Integer.parseInt(c)*4+Integer.parseInt(d)*5; 
      tv.setText(vis.toString()); 
     } catch (NumberFormatException e) { 
      vis = "0"; 
     } 

     // Do something with "vis" 
    } 
} 

或者你可以创建检查一个值,尝试解析为int或返回默认值的方法。

public int getInt(String edtValue, int defaultValue) { 
    int value = defaultValue; 

    if (edtValue != null) { 
     try { 
      value = Integer.parseInt(edtValue); 
     } catch (NumberFormatException e) { 
      value = defaultValue; 
     } 
    } 

    return value; 
} 

然后您更改呼叫到

vis = this.getInt(a, 0) * 2 + this.getInt(b, 0) * 3 + this.getInt(c, 0) * 4 + this.getInt(d, 0) * 5; 
+0

不是android提示。我希望它有一个默认值0.当我没有输入时,Edittext会假设我输入了0或者有0作为默认值,当我输入数字时它会改变。我该怎么做? – Kerv

+0

@Kerv我已经编辑了我的答案。请检查是否有帮助。 –

+0

谢谢!如果我可以接受2个或更多的答案,我可以做到。再次感谢! – Kerv

1

检查的EditText长度当你得到它

String value = null; 

if(ed.getText().length()){ 
value = textBox.getText().toString(); 
} else 
value = 0+""; 
相关问题