所以我目前正在开发一款需要数字选择器的应用。我使用按钮textview +按钮布局创建了数字选择器。 t当你删除号码并尝试按下任何按钮时,选择器工作正常,此时应用程序崩溃。
public class MainActivity extends Activity implements OnClickListener {
Button btnUp, btnDown;
EditText editTextSonyResult;
int nStart = (-100);
int nEnd = 250;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnUp = (Button) findViewById(R.id.plusButton1);
btnDown = (Button) findViewById(R.id.minusButton1);
editTextSonyResult = (EditText) findViewById(R.id.numberView1);
editTextSonyResult.setText("0");
btnUp.setOnClickListener(this);
btnDown.setOnClickListener(this);
}
public void onClick(View v) {
String getString = String.valueOf(editTextSonyResult.getText());
int current = Integer.parseInt(getString);
if (v == btnUp) {
if (current < nEnd) {
current++;
editTextSonyResult.setText(String.valueOf(current));
}
}
if (v == btnDown) {
if (current > nStart) {
current--;
editTextSonyResult.setText(String.valueOf(current));
}
}
}
任何帮助将不胜感激。 干杯
这里是错误点的logcat 04-27 19:58:10.042 3016-3016 / com.example.liam.sonyreportingapp D / AndroidRuntime:关闭VM 04-27 19:58:10.042 3016-3016 / com.example.liam.sonyreportingapp E / AndroidRuntime:FATAL EXCEPTION:main 处理:com.example.liam.sonyreportingapp,PID:3016 java.lang.NumberFormatException:无效的int:&#34;&#34; 在java.lang.Integer.invalidInt(Integer.java:138) 在java.lang.Integer.parseInt(Integer.java:358) 在java.lang.Integer.parseInt(Integer.java:334) 在com.example.liam.sonyreportingapp.MainActivity.onClick(MainActivity.java:42) 在android.view.View.performClick(View.java:4780) 在android.view.View $ PerformClick.run(View.java:19866) 在android.os.Handler.handleCallback(Handler.java:739) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:135) 在android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invoke(Native Method) 在java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
答案 0 :(得分:1)
EditText将允许用户手动输入。如果您不希望用户具备此功能,请改为切换到TextView。
你的
崩溃了int current = parseInt(getString);
因为如果你的EditText是空的,因为用户清除了该框,那么parseInt将返回NaN(不是数字),它不能存储为int,因此它会崩溃。
编辑:这是他们关闭Android键盘但处理空白时可能看起来的样子,不要忘记检查非数字条目而不仅仅是空白条目..
((EditText)findViewById(R.id.numberView1)).setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//CHECK USER INPUT HERE. IF BLANK SET BACK TO 0 or DO NOT UPDATE VALUE ETC
return true;
}
//I think this is if user presses back instead of pressing done/ok but i've never added code here
return false;
}
});
然后添加
android:imeActionId="@+id/IME_ACTION_SEND"
在XML中的EditText内
编辑:删除了问题。
另外,如果btnDown检查当前&gt;恩,而不是小于?或者当前&lt; n开始。我不相信你想要两者完全相同的检查。
答案 1 :(得分:0)
以防万一,这里是现有答案的替代方案,前段时间我创建了一个自定义的NumberPicker类,您可以将其添加到布局xml文件中: