我是Java和Android的新手,我正在开发一个程序,它连续有两个EditText。我希望第一个edittext是一个字符串,第二个是分配给该字符串的整数。
为了使其更具体,用户输入Homework和15并且我希望保存此编号,以便将来当用户使用值输入作业到Homework时,该值乘以15。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/register_assign_edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:hint="@string/example_assign"
android:singleLine="true"
android:inputType="textCapWords"
android:layout_weight="1">
</EditText>
<EditText
android:id="@+id/register_weight_edit"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:hint="@string/example_weight"
android:layout_marginLeft="3dp"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true"
android:maxLength="2">
</EditText>
</LinearLayout>
这是我的xml文件
这是我的.java文件
public void onAddNewClicked(View v){
inflateEditRow(null, null);
v.setVisibility(View.GONE);
}
private void inflateEditRow(String name, String name1){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.new_class, null);
final EditText register_assign = (EditText) rowView.findViewById(R.id.register_assign_edit);
final EditText register_weight = (EditText) rowView.findViewById(R.id.register_weight_edit);
if (name != null && !name.isEmpty()) {
register_assign.setText(name);
register_weight.setText(name1);
} else {
mExclusiveEmptyView = rowView;
}
mContainerView.addView(rowView, mContainerView.getChildCount()-1);
}
我尝试将String name2的参数更改为Integer权重,当我在OnAddNewClicked中将其作为inflateEditRow(null,(Integer)null)调用时,程序崩溃了。
答案 0 :(得分:0)
要转换包含预期整数值的String
,请使用:
Integer.valueOf(yourString);
请记住,您必须尝试捕获转换,因为如果原始String
不包含有效的整数值,则会引发NumberFormatException
。
答案 1 :(得分:0)
只需使用整数并像这样设置EditText:
private void inflateEditRow(String name, int number) {
//... your code
register_weight.setText(""+number);
//... your code
}
如果要从EditText获取Integer值,请调用
int myinteger = Integer.valueOf(edittext.getText().toString());
但请确保EditText仅包含整数值,否则您的应用程序将崩溃。
答案 2 :(得分:0)
将null
投射到任何类型 - 就像使用Integer
一样无用。在调用inflateEditRow(null, null)
之前,调用ClassCastException
是相同的(除非你想捕获Integer
)。
如果您想将Integer.toString()
转换为仅调用String
或向其添加空String intString = yourInteger + "";
(“”),例如String.valueOf(anInteger)
。或者您可以使用Integer
如果您要从String
使用Integer.parseInt(aString)
解析NumberFormatException
。但是,您可能需要检查{{1}}。